Partage
  • Partager sur Facebook
  • Partager sur Twitter

$_GET dans une requête sql

La transmission ne se fait pas...

    18 août 2006 à 18:11:38

    Bonjour,

    mon problème peut paraitre tout simple (et pour quelqu'un de plus expérimenté que moi c'est surement le cas) mais je n'arrive pas à trouver de solution...
    Je veux récupérer par un $_GET le pseudo d'un membre de mon site et afficher un fiche mais lorsque je fais ma requête sql, les informations ne sont pas récupérées...

    Voici le code de ma requête (d'où vient très probablement l'erreur):
    $req = mysql_query("SELECT * FROM membres WHERE nom=".$_GET['pseudo']);
    $donnees = mysql_fetch_array($req);


    et le lien vers la page:
    <a href="fiche_membre.php?pseudo=<?php echo $donnees['nom'];?>">


    Voilà si vous avez une idée pour moi je vous en serait très reconnaissant ^^
    Merci d'avance!
    • Partager sur Facebook
    • Partager sur Twitter
      18 août 2006 à 18:15:50

      $req = mysql_query("SELECT * FROM membres WHERE nom='" . $_GET['pseudo'] . "'");

      Dans ce cas précis, utilise mysql_result() plutôt que mysql_fetch_array().
      • Partager sur Facebook
      • Partager sur Twitter
        18 août 2006 à 18:17:35

        Salut,
        Déjà on met des quotes ( ' ) autour du texte en SQL ;)
        Ensuite nommes les champs que tu veux dans ta requête :)
        Enfin si ca bug encore tu peux faire ceci :
        $req = "SELECT champ1, champ2 FROM membres WHERE nom='".$_GET['pseudo']."'";
        $retour = mysql_query($req) or die('<p>Erreur SQL sur la requête '.$req.' (ligne '. __LINE__ .') : '. mysql_error() . '</p>');

        Et si ca ne t'affiche pas d'erreur, tu peux faire un
        echo $req;
        Pour voir ce qui cloche dans ta requête ;)
        • Partager sur Facebook
        • Partager sur Twitter
          18 août 2006 à 18:24:59

          >>Dentuk: J'ai besoin de tous les champs justement ^^ et lorsque je fais un echo $req il m'affiche que l'id...

          >>Bossissman: C'est quoi la différence entre les deux?
          • Partager sur Facebook
          • Partager sur Twitter
            18 août 2006 à 18:25:16

            Etrange... l'heure a laquelle vous avez posté et l'ordre d'affichage :o

            Citation : Pas de titre

            >>Dentuk: J'ai besoin de tous les champs justement ^^ et lorsque je fais un echo $req il m'affiche que l'id...


            Meme. C'est déconseillé de faire un *

            Mal lu :-°
            • Partager sur Facebook
            • Partager sur Twitter
              18 août 2006 à 18:29:58

              Par echo $req je voulais dire ça :
              $req = "SELECT champ1, champ2 FROM membres WHERE nom='".$_GET['pseudo']."'";
              echo $req;
              La différence c'est qu'avec mysql_result() tu vas directement chercher un résultat sans passer par un array.
              Mais je vois pas en quoi ce serait plus adapté ici o_O
              • Partager sur Facebook
              • Partager sur Twitter
                18 août 2006 à 18:37:29

                J'ai essayé en listant tous les champs à prendre et j'ai toujours le même problème...
                • Partager sur Facebook
                • Partager sur Twitter
                  18 août 2006 à 18:40:43

                  Remontres ton code stp :)
                  Et ce que donne le code avec le mysql_error() que j'ai donné plus haut ;)
                  (la liste des champs c'est juste parce que c'est mieux ca va pas tout débuger hein :D )
                  • Partager sur Facebook
                  • Partager sur Twitter
                    18 août 2006 à 18:44:22

                    Alors avec ton code je n'ai aucune erreur mais toujours le même problème
                    Pour le code complet c'est ça:
                      mysql_connect ($host, $username, $password);
                      mysql_select_db ($bdd_name);
                    $req = "SELECT * FROM membres WHERE nom='".$_GET['pseudo']."'";
                    $donnees = mysql_query($req) or die('<p>Erreur SQL sur la requête '.$req.' (ligne '. __LINE__ .') : '. mysql_error() . '</p>');
                    • Partager sur Facebook
                    • Partager sur Twitter
                      18 août 2006 à 18:53:38

                      Ca donne quoi ça ?
                      $retour = mysql_query("SELECT COUNT(*) > 0 FROM membres WHERE nom = '".$_GET['pseudo']."'");
                      if(mysql_result($retour, 0) == 1)
                      {
                          echo '<pre>Au moins 1 enregistrement correspond.'."\\n";
                          $req = "SELECT * FROM membres WHERE nom='".$_GET['pseudo']."'";
                          $retour = mysql_query($req) or die('<p>Erreur SQL sur la requête '.$req.' (ligne '. __LINE__ .') : '. mysql_error() . '</p>');
                          $donnees = mysql_fetch_assoc($retour);
                          print_r($donnees);
                          echo '</pre>';
                      }
                      else echo 'Aucun enregistrement ne correspond';
                      • Partager sur Facebook
                      • Partager sur Twitter
                        18 août 2006 à 20:05:44

                        ça donne ça:
                        Au moins 1 enregistrement correspond.\\nArray
                        (
                            [id] => 1
                            [nom] => Mrbinks
                           
                        )


                        Alors là j'avoue être paumé.... Comment ça se fait qu'il reconnaisse le pseudo mais qu'il n'affiche pas les infos? J'ai bien gardé le même nom de varaible dans le reste du code pourtant... En tout cas merci de ton aide Dentuk! :)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          18 août 2006 à 20:52:47

                          C'est pour récupérer l'id du membre que tu fais ça ou c'est pour vérifier si le pseudo est déjà dans la table ?
                          • Partager sur Facebook
                          • Partager sur Twitter
                            18 août 2006 à 21:04:33

                            En fait y'a d'autres données (une trentaine) et ça me sert à les récupérer. Je les ai juste enlevées parce qu'elles concernent des informations personnelles ^^ .
                            • Partager sur Facebook
                            • Partager sur Twitter
                              18 août 2006 à 21:11:36

                              Ok, alors montres la partie où tu affiches les données ?
                              • Partager sur Facebook
                              • Partager sur Twitter
                                18 août 2006 à 21:15:50

                                <?php
                                session_start(); // On démarre la session AVANT toute chose

                                  $req = mysql_query("SELECT * FROM membres WHERE nom = '".$_GET['pseudo']."'");
                                  $donnees = mysql_fetch_array($req);
                                ?>

                                <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
                                <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
                                   <head>
                                <?php
                                // Connexion à la BD

                                  require('config.inc.php');

                                  mysql_connect ($host, $username, $password);
                                  mysql_select_db ($bdd_name); ?>
                                   <title>Le site de Rémi - Quelques informations sur <?php echo $donnees['nom'] ; ?>.</title>
                                       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
                                       <link rel="stylesheet" media="screen" type="text/css" title="Design normal" href="Design/Design_normal.css" />
                                   </head>
                                   <body>

                                <?php include("Haut.php"); ?>
                                <?php include("Menu.php");?>

                                   <div class="fiche_membre">
                                       <h2>La fiche de <?php echo $donnees['nom'] ; ?>.</h2>
                                       <table>
                                           <tr>
                                               <td>
                                                   <img src="<?php echo $donnees['url_avatar']?>" alt="avatar de <?php echo $donnees['nom']; ?>" />
                                                   <br /><br />
                                                   <ul>
                                                       <li>Sa phrase favorite:<br />
                                                           <?php echo $donnees['slogan']; ?>
                                                       </li>
                                                       <li>Sa philosophie de vie:<br />
                                                           <?php echo $donnees['philo_vie'];?></li>
                                                       <li><?php if($donnees['sexe']== "femme")
                                                                 {echo 'elle est plutôt du genre:';}
                                                                 else
                                                                 {echo 'il est plutôt du genre:';}?><br />
                                                           <?php echo $donnees['caractere']; ?>.</li>
                                                   </ul>
                                               </td>
                                               <td>
                                                   <ul>
                                                      <li>Son adresse email: <?php echo $donnees['email']; ?></li>
                                                      <li>Son adresse de messagerie instantannée: <?php echo $donnees['msn']; ?></li>
                                                      <li>Son prénom: <?php echo $donnees['prenom']; ?></li>
                                                      <li>Son lieu de vie actuel: <?php echo $donnees['lieu_vie']; ?></li>
                                                      <li>Sa date de naissance: <?php echo $donnees['jour_naissance']; ?>/<?php echo $donnees['mois_naissance']; ?>/<?php echo $donnees['annee_naissance']; ?></li>
                                                      <li><?php if($donnees['forum']== "non")
                                                                 {echo $donnees['nom'].'n\\'est pas insrcit(e) sur le forum';}
                                                                 else
                                                                 {echo $donnees['
                                nom'].'est inscrit(e) sur le forum';}?></li>
                                                      <li><?php echo $donnees['
                                nom'] ;?> aime: <?php echo $donnees['passions']; ?></li>
                                                   </ul>
                                               </td>
                                           </tr>
                                           <tr>
                                               <td>
                                                   <img src="<?php echo $donnees['
                                url_banniere']?>" alt="banniere de <?php echo $donnees['nom']; ?>" />
                                               </td>
                                           </tr>
                                       </table>
                                   </div>

                                <?php   mysql_close();
                                        include("Bas.php"); ?>


                                Je n'ai pas encore tout mis mais pour l'instant j'ai ça.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  18 août 2006 à 21:37:16

                                  Il faut mettre le mysql_query et tout le tralala après la connexion ;)
                                  A part ça il faut vérifier que $_GET['pseudo'] existe et n'est pas vide avec la fonction empty() et le protéger ainsi (par exemple)
                                  // Si il y a un addslashes automatique on le supprime
                                  if(get_magic_quotes_gpc()) $_GET['pseudo'] = stripslashes($_GET['pseudo']);
                                  //On fait la requete avec la variale protégée
                                  mysql_query("machin WHERE nom = '". mysql_real_escape_string($_GET['pseudo']."'")
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    18 août 2006 à 21:46:58

                                    :lol: désolé j'ai mal recopié mon code et le $_GET n'est pas vide (je l'ai déjà vérifié avec un echo)
                                    Pour les sécurité je les connaissaient pas celles-là, merci ^^
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      18 août 2006 à 21:50:11

                                      Montres ton code bien modifié :-°

                                      Citation : Mrbinks

                                      le $_GET n'est pas vide (je l'ai déjà vérifié avec un echo)

                                      Mais là je parlais pour plus tard, car le $_GET change si le visiteur le veut.
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        18 août 2006 à 21:54:42

                                        <?php
                                        session_start(); // On démarre la session AVANT toute chose

                                        // Connexion à la BD

                                          require('config.inc.php');

                                          mysql_connect ($host, $username, $password);
                                          mysql_select_db ($bdd_name);

                                        // Si il y a un addslashes automatique on le supprime
                                        if(get_magic_quotes_gpc()) $_GET['pseudo'] = stripslashes($_GET['pseudo']);
                                        //On fait la requete avec la variale protégée
                                          $req = mysql_query("SELECT * FROM membres WHERE nom = '".mysql_real_escape_string($_GET['pseudo'])."'");
                                          $donnees = mysql_fetch_array($req);
                                        ?>

                                        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
                                        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
                                           <head>
                                           <title>Le site de Rémi - Quelques informations sur <?php echo $donnees['nom'] ; ?>.</title>
                                               <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
                                               <link rel="stylesheet" media="screen" type="text/css" title="Design normal" href="Design/Design_normal.css" />
                                           </head>
                                           <body>

                                        <?php include("Haut.php"); ?>
                                        <?php include("Menu.php");?>

                                        //le echo pour vérifier que le $_GET n'est pas vide
                                        <?php echo $_GET['pseudo']; ?>

                                           <div class="fiche_membre">
                                               <h2>La fiche de <?php echo $donnees['nom'] ; ?>.</h2>
                                               <table>
                                                   <tr>
                                                       <td>
                                                           <img src="<?php echo $donnees['url_avatar']?>" alt="avatar de <?php echo $donnees['nom']; ?>" />
                                                           <br /><br />
                                                           <ul>
                                                               <li>Sa phrase favorite:<br />
                                                                   <?php echo $donnees['slogan']; ?>
                                                               </li>
                                                               <li>Sa philosophie de vie:<br />
                                                                   <?php echo $donnees['philo_vie'];?></li>
                                                               <li><?php if($donnees['sexe']== "femme")
                                                                         {echo 'elle est plutôt du genre:';}
                                                                         else
                                                                         {echo 'il est plutôt du genre:';}?><br />
                                                                   <?php echo $donnees['caractere']; ?>.</li>
                                                           </ul>
                                                       </td>
                                                       <td>
                                                           <ul>
                                                              <li>Son adresse email: <?php echo $donnees['email']; ?></li>
                                                              <li>Son adresse de messagerie instantannée: <?php echo $donnees['msn']; ?></li>
                                                              <li>Son prénom: <?php echo $donnees['prenom']; ?></li>
                                                              <li>Son lieu de vie actuel: <?php echo $donnees['lieu_vie']; ?></li>
                                                              <li>Sa date de naissance: <?php echo $donnees['jour_naissance']; ?>/<?php echo $donnees['mois_naissance']; ?>/<?php echo $donnees['annee_naissance']; ?></li>
                                                              <li><?php if($donnees['forum']== "non")
                                                                         {echo $donnees['nom'].'n\\'est pas insrcit(e) sur le forum';}
                                                                         else
                                                                         {echo $donnees['
                                        nom'].'est inscrit(e) sur le forum';}?></li>
                                                              <li><?php echo $donnees['
                                        nom'] ;?> aime: <?php echo $donnees['passions']; ?></li>
                                                           </ul>
                                                       </td>
                                                   </tr>
                                                   <tr>
                                                       <td>
                                                           <img src="<?php echo $donnees['
                                        url_banniere']?>" alt="banniere de <?php echo $donnees['nom']; ?>" />
                                                       </td>
                                                   </tr>
                                               </table>
                                           </div>

                                        <?php   mysql_close();
                                                include("Bas.php"); ?>


                                        Par contre je viens de voir un truc étrange: le pseudo s'affiche bien dans le titre (<title></title>) o_O . Je comprends décidement rien moi :lol:
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          18 août 2006 à 21:59:00

                                          Hum, tu n'aurais pas un autre array appelé $donnees dans un de tes includes ?
                                          Secret (cliquez pour afficher)
                                          Et renommes tes champs ^^
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            18 août 2006 à 22:02:00

                                            Arf oui c'est ça! :lol: Merci Dentuk! Maintenant ça marche (j'ai une variable $donneesdans Haut.php...... Oh le boulet :lol: )

                                            Problème résolu!
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              18 août 2006 à 22:04:34

                                              Ok :)
                                              Au passage, ça sert à quoi les ?> <?php tous les 10 caractères ? :euh:
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                18 août 2006 à 22:17:01

                                                C'est juste que j'ai la mauvaise habitude de faire le html avant le php... Généralement je simplifie une fois que la page est bien au point :)
                                                • Partager sur Facebook
                                                • Partager sur Twitter

                                                $_GET dans une requête sql

                                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                • Editeur
                                                • Markdown