Partage
  • Partager sur Facebook
  • Partager sur Twitter

Requete dans une boucle

(je suis obligé)

    12 mai 2006 à 21:59:22

    Salut,

    Voila, j'ai :



    $nom ='dupon';


    $requete = mysql_query("SELECT * FROM utilisateurs WHERE nom='$nom'");

    while($donnees = mysql_fetch_array($requete))
    {
    $prenom = $donnees['prenom'];


    $requete2 = mysql_query("SELECT * FROM utilisateurs WHERE prenom LIKE '%$prenom' ");
    }
    while($donnees2 = mysql_fetch_array($requete2))
       {
        $prenom2 = $donnees2['prenom'];

           
            echo $prenom2;
         
    }



    Voila aucune erreur n'est signalée seulement sa ne fonctionne pas.
    Je voudrais savoir si il est possible de mettre une requete dans une boucle, et donc quelle est le code correct?

    Merci à vous ;)

    • Partager sur Facebook
    • Partager sur Twitter
      12 mai 2006 à 22:00:58

      tu veux faire quoi en gros?

      ton code corrigé:

      $nom ='dupon';


      $requete = mysql_query("SELECT * FROM utilisateurs WHERE nom='$nom'");

      while($donnees = mysql_fetch_array($requete))
      {
      $prenom = $donnees['prenom'];


      $requete2 = mysql_query("SELECT * FROM utilisateurs WHERE prenom LIKE '%$prenom' ");

      while($donnees2 = mysql_fetch_array($requete2))
      {
      $prenom2 = $donnees2['prenom'];


      echo $prenom2;

      }
      }
      • Partager sur Facebook
      • Partager sur Twitter
        12 mai 2006 à 22:13:16

        Et si tu passais par une requete imbriquée ? Comme ceci :


        $nom ='dupon';

        $requete = mysql_query("SELECT * FROM utilisateurs WHERE prenom LIKE (SELECT prenom FROM utilisateurs WHERE nom='$nom')");

        while($donnees = mysql_fetch_array($requete))
           {
           echo $donnees2['prenom'];
           }
        • Partager sur Facebook
        • Partager sur Twitter
          12 mai 2006 à 22:15:51

          En effet ce code fonctionne :


          $nom ='dupon';

           
          $requete = mysql_query("SELECT * FROM utilisateurs WHERE nom='$nom'");

          while($donnees = mysql_fetch_array($requete))
          {
          $prenom = $donnees['prenom'];


          $requete2 = mysql_query("SELECT * FROM utilisateurs WHERE prenom LIKE '%$prenom' ");

          while($donnees2 = mysql_fetch_array($requete2))
          {
          $prenom2 = $donnees2['prenom'];


          echo $prenom2;

          }
          }


          mais celui-ci non, sa me met une erreur (Warning: mysql_fetch_array(): supplied argument is not a valid MySQL) :


          $nom ='dupon';


          $requete = mysql_query("SELECT * FROM utilisateurs WHERE nom LIKE '%$nom%'");

          while($donnees = mysql_fetch_array($requete))
          {
          $prenom = $donnees['prenom'];


          $requete2 = mysql_query("SELECT * FROM utilisateurs WHERE prenom LIKE '%$prenom%' ");

          while($donnees2 = mysql_fetch_array($requete2))  <== ligne erreur
          {
          $prenom2 = $donnees2['prenom'];


          echo $prenom2;

          }
          }





          Merci d'avance :)
          • Partager sur Facebook
          • Partager sur Twitter
            12 mai 2006 à 22:18:17

            Met des or die(mysql_error()) après tes requêtes, ça ira mieu ^^
            • Partager sur Facebook
            • Partager sur Twitter
              12 mai 2006 à 22:21:00

              You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'jean dupont%'' at line 1


              voila :)
              • Partager sur Facebook
              • Partager sur Twitter
                12 mai 2006 à 22:28:29


                $nom ='dupon';

                $requete = mysql_query("SELECT nom, prenom FROM utilisateurs WHERE prenom LIKE (SELECT prenom FROM utilisateurs WHERE nom='%".$nom."%')") or die(mysql_error());

                while($donnees = mysql_fetch_array($requete))
                   {
                   echo $donnees['nom'].' '.$donnees['prenom'].'<br />';
                   }


                /me persiste et signe, la requete imbriquée c'est plus mieux.
                • Partager sur Facebook
                • Partager sur Twitter
                  12 mai 2006 à 23:00:00

                  Ton code me sort une page blanche :o
                  Au moins y'a pas d'erreurs ^^

                  Je voudrais séléctionner le prenom de(s) personne(s) qui ont un nom qui comporte le mot 'dupont'.

                  Pour l'instant tou va bien, aprés je prend le prenom de(s) personnes(s), et je cherche le nom de(s) personne(s) qui comportent un ou plusieurs mot(s) des prenoms trouvaient précédament...

                  En schéma :D :


                  nom: Jean dupont
                  prenom : charles

                  nom: charles de boncour
                  prenom: robert

                  Au début je prend le prenom de(s) personne(s) qui ont un nom qui contient "dupont", je trouve charles (qui a pour nom : jean DUPONT), avec son prénom CHARLES, je cherche un personne qui a un nom contenant CHARLES, et je trouve charles de boncour, (robert).




                  Voila
                  • Partager sur Facebook
                  • Partager sur Twitter
                    13 mai 2006 à 2:14:16

                    Citation : eagle

                    Ton code me sort une page blanche :o



                    Une page blanche ca peut aussi vouloir dire pas de résultats. ;)
                    Peut-être que cela vient du second test - = avec des %, forcement il doit pas trouver grand chose... -. Essaie ca :
                    $nom ='dupon';

                    $requete = mysql_query("SELECT nom, prenom FROM utilisateurs WHERE prenom LIKE (SELECT prenom FROM utilisateurs WHERE nom LIKE '%".$nom."%')") or die(mysql_error());

                    if(mysql_num_rows($requete)!=0)
                       {
                       while($donnees = mysql_fetch_array($requete))
                          {
                          echo $donnees['nom'].' '.$donnees['prenom'].'<br />';
                          }
                       }
                    else
                       {
                       echo 'Aucun résultat';
                       }
                    • Partager sur Facebook
                    • Partager sur Twitter
                      13 mai 2006 à 12:37:08

                      Salut Folken Laëneck,

                      Voila j'ai bien mis le code suivant :


                      $nom ='dupon';

                      $requete = mysql_query("SELECT nom, prenom FROM utilisateurs WHERE nom LIKE (SELECT prenom FROM utilisateurs WHERE nom LIKE '%".$nom."%')") or die(mysql_error());

                      if(mysql_num_rows($requete)!=0)
                         {
                         while($donnees = mysql_fetch_array($requete))
                            {
                            echo $donnees['nom'].' '.$donnees['prenom'].'<br />';
                            }
                         }
                      else
                         {
                         echo 'Aucun résultat';
                         }


                      mais la requete ne fonctionne pas, vu que la page m'indique :

                      Aucun résultat

                      Voici le code sql :


                      --
                      -- Structure de la table `utilisateurs`
                      --

                      CREATE TABLE `utilisateurs` (
                        `id` int(11) NOT NULL AUTO_INCREMENT,
                        `nom` varchar(220) NOT NULL DEFAULT '',
                        `prenom` varchar(220) NOT NULL DEFAULT '',
                        KEY `id` (`id`)
                      ) ENGINE=MyISAM DEFAULT CHARACTER SET utf8 COLLATE utf8_bin AUTO_INCREMENT=3 ;

                      --
                      -- Contenu de la table `utilisateurs`
                      --

                      INSERT INTO `utilisateurs` VALUES (1, 'Jean dupont', 'charles');
                      INSERT INTO `utilisateurs` VALUES (2, 'charles de boncour', 'robert');




                      Ton code devrait séléctionner le prenom de la personne qui a un nom ressemblant à $nom ='dupon', et ensuite avec ce prenom il devrait séléctionner un nom qui ressemble au prenom trouver juste avant.

                      Mais sa ne fonctionne pas ^^
                      Merci d'avance ;)

                      Bonne journée :)


                      EDIT : Je viens de remarquer que la requete ne fonctionne que quand le prenom de la personne est exactement égal au nom de l'autre, mais le seul problème c'est qu'il faut que sa fonctionne même quand le prenom de l'un n'est pas exactement pareil au nom de l'autre ..
                      • Partager sur Facebook
                      • Partager sur Twitter
                        13 mai 2006 à 12:47:14

                        Ce que tu fais est assez dangereux, ça voudrait dire que tu peux tomber dans une boucle infinie (mais quel est le but??)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          13 mai 2006 à 12:52:04

                          EDIT : Je viens de remarquer que la requete ne fonctionne que quand le prenom de la personne est exactement égal au nom de l'autre, mais le seul problème c'est qu'il faut que sa fonctionne même quand le prenom de l'un n'est pas exactement pareil au nom de l'autre ..

                          En faite ce code va servir pour un moteur de recherche, y'aura un bouton "recherche" et "recherche approndie", ce code va donc servir pour recherche approndie, il est plus performant car il cherche avec 2 requetes..

                          A la place de :
                          $requete = mysql_query("SELECT nom, prenom FROM utilisateurs WHERE nom LIKE (SELECT prenom FROM utilisateurs WHERE nom LIKE '%".$nom."%')") or die(mysql_error());


                          il faudrait un truc du style :

                          $requete = mysql_query("SELECT nom, prenom FROM utilisateurs WHERE nom LIKE '%(SELECT prenom FROM utilisateurs WHERE nom LIKE '%".$nom."%')%'") or die(mysql_error());



                          J'ai essayer :
                          $requete2 = mysql_query("SELECT prenom FROM utilisateurs WHERE nom LIKE '%".$nom."%'") or die(mysql_error());
                          $requete = mysql_query("SELECT * FROM utilisateurs WHERE nom LIKE '%".$requete2."%'") or die(mysql_error());


                          Aucun résultat
                          :(
                          • Partager sur Facebook
                          • Partager sur Twitter

                          Requete dans une boucle

                          × 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