IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de donn�es Discussion :

probl�me avec 2 requetes pour 1 m�me tableau [MySQL]


Sujet :

PHP & Base de donn�es

  1. #1
    Membre �clair� Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Par d�faut probl�me avec 2 requetes pour 1 m�me tableau
    Bonjour,
    J'ai 2 tables reli�es par une cl� :
    Table USER dont cl� primaire est "iduser".
    Table COURS dont cl� etrangere est "userid"
    ==> donc iduser = userid
    Je selectionne tous les cours et les affiches avec une boucle sous forme d'un tableau.
    Mais dans ce tableau je voudrai inserer une cellule affichant le "username" pris dans la table USER qui correspond � l'userid de la table COURS mais j'arrive pas � le faire !
    Voici mes requetes :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $story_sql = "select * from cours
                    where page = '".$pages['code']."'
                    and published is not null
                    order by published desc";
    				$story_result = mysql_query($story_sql, $conn);
      if (mysql_num_rows($story_result)) {
    $story_sql = "select * from cours
                    where page = '".$pages['code']."'
                    and published is not null
                    order by published desc";
    				$story_result = mysql_query($story_sql, $conn);
      if (mysql_num_rows($story_result)) {
    ...affichage du tableau
    Pour ma requete suivante concernant les noms :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    $result="select username from user where iduser = .'$story[userid]'";
    a partir de l� je bloque !
    Merci � ceux qui m'aideront :-)

  2. #2
    Membre �clair�
    Inscrit en
    Octobre 2005
    Messages
    76
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 76
    Par d�faut Re: probl�me avec 2 requetes pour 1 m�me tableau
    Une proposition avec une jointure sur les deux tables :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    $story_sql = "select cours.*, user.username 
       from cours 
          left join user on (user.iduser = cours.userid)
       where page = '".$pages['code']."'
                    and published is not null
                    order by published desc";
    $story_result = mysql_query($story_sql, $conn);
    Et puis que je suis un maniaque je dirais m�me : les doubles quotes sont ici inutile, et pour �viter les probl�mes d'injection SQL :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    $story_sql = 'select cours.*, user.username 
       from cours 
          left join user on (user.iduser = cours.userid)
       where page = "'. str_replace('"', '\"', $pages['code']) .'"
                    and published is not null
                    order by published desc';
    $story_result = mysql_query($story_sql, $conn);

  3. #3
    Membre �clair� Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Par d�faut
    Je te remercie the_jeck c'est exactement ce que je voualis, j'ai encore des soucis avec les jointures mais ca va finir par rentrer.
    Dis moi stp c'est quoi cette manip qui doit eviter le sql injection ?

  4. #4
    Membre �clair�
    Inscrit en
    Octobre 2005
    Messages
    76
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 76
    Par d�faut
    en fait, lorsque tu mets une variable dans une chaine qui devient une requete SQL... il faut �viter que cette variable puisse contenir un code qui va modifier le comportement de ta quete...

    par exemple dans ton cas si j'ai ca :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    $pages['code'] = 'tutu"; select * from user;';
    ta quete SQL risque de ressembler � ca :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    select cours.*, user.username from cours left join user on (user.iduser = cours.userid) where page = "tutu"; select * from user; "...
    on se retrouve avec plusieurs requetes conc�cutives... dont une qui vient d'une variable (par exemple un champ input ?)

    avec le str_replace :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    select cours.*, user.username from cours left join user on (user.iduser = cours.userid) where page = "tutu\"; select * from user; "...
    la requete inject�e se retrouve trait�e comme une simple chaine de caract�re, la requ�te d'origine ne renverra sans doute aucun enregistrement, mais rien de plus.

    Voil� le principe ;-)

  5. #5
    Membre �clair� Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Par d�faut
    ok merci !

  6. #6
    Membre �clair� Avatar de tigunn
    Homme Profil pro
    D�veloppeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Par d�faut
    8) Salut,

    juste une petite remarque en passant tu peut utiliser la fonction addslashes() (et sa copine stripslashes() ) pour s'assurer contre l'injection sql. C'est plus simple que str_replace() , isnt'it ?

    bon dev'

  7. #7
    Membre �clair� Avatar de guy2004
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    805
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 805
    Par d�faut
    oui !

  8. #8
    Expert confirm� Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par d�faut
    Citation Envoy� par tigunn
    8) Salut,

    juste une petite remarque en passant tu peut utiliser la fonction addslashes() (et sa copine stripslashes() ) pour s'assurer contre l'injection sql. C'est plus simple que str_replace() , isnt'it ?

    bon dev'
    +1 sachant que pour mysql ca ne suffira pas car il reste les caract�res � slasher :
    http://us2.php.net/manual/fr/function.mysql-real-escape-string.php

  9. #9
    Membre �clair�
    Inscrit en
    Octobre 2005
    Messages
    76
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 76
    Par d�faut
    Ah tien, je ne la connaissais pas cette fonction !! merci beaucoup !! ca va en aider plus d'un par ici ;-)

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [MySQL] probl�me avec deux requetes dans un m�me script
    Par leclone dans le forum PHP & Base de donn�es
    R�ponses: 2
    Dernier message: 09/02/2007, 10h28
  2. probl�mes avec "include file" pour une page asp
    Par chipsense dans le forum ASP
    R�ponses: 1
    Dernier message: 02/09/2005, 15h22
  3. [debutant]Probl�me avec une requete ....
    Par MichMich29 dans le forum Langage SQL
    R�ponses: 7
    Dernier message: 27/07/2005, 17h19
  4. probl�me avec ma requete contenant un "in" :
    Par seb78000 dans le forum Langage SQL
    R�ponses: 3
    Dernier message: 10/07/2005, 16h38
  5. [tomcat] [jsp] Probl�me avec driver OCI pour oracle
    Par nanardcompanie dans le forum Tomcat et TomEE
    R�ponses: 3
    Dernier message: 01/07/2004, 09h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo