Prob d'itération dans boucle while (PHP/Sql)

Bonjour,

J'ai un souci, j'imbrique deux boucles while, et la première ne fait que la première itération, et ne reboucle pas. La seconde fait bien toutes les itérations. Voici le code :

$req1 = mysql_query("SELECT nom1 FROM table WHERE effet1='$effet1';");

while($table_ing1 = mysql_fetch_assoc($req1)) {
$ing1 = $table_ing1['nom1'];

while($table_ing2 = mysql_fetch_assoc($req1)) {
$ing2 = $table_ing2['nom1'];

if($ing2 != $ing1) {
echo $ing1." - ".$ing2."<br/>";
}
}
}

Je ne comprends vraiment pas pourquoi ...

Merci d'avance pour vos réponses

4 réponses

  1. Bonjour

    chaque mysql_fetch_assoc lit un enregistrement de $req1 et te rend faux quand il n'y en a plus

    Le premier de ta 1ère boucle while lit le premier enregistrement
    Le second while lit le second enregistrement, puis le 3ème... jusqu' au dernier
    Maintenant, mysql_fetch_assoc te rend faux : ton 1er while n'a plus de raison de continuer, sa condition est fausse.

    Un solution consisterait à faire deux fois la même requête avec un résultat $req1 et l'autre $req2. Tu pourrais imbriquer les while en en faisant un sur mysql_fetch_assoc($req1) et l'autre sur mysql_fetch_assoc($req2)
    0
    1. Merci beaucoup pour ta réponse et pour l'explication !
      0
      1. Hmmm, je ne comprends pas, j'ai fait ce que tu m'as dit, et ça ne fonctionne toujours pas. Voici le code

        $req1 = mysql_query("SELECT ingFROM table WHERE effet1='$effet1';");
        $req2 = mysql_query("SELECT ingFROM table WHERE effet1='$effet1';");

        while($table_ing1 = mysql_fetch_assoc($req1)) {
        $ingredient1 = $table_ing1['ingredient'];

        while($table_ing2 = mysql_fetch_assoc($req2)) {
        $ingredient2 = $table_ing2['ingredient'];
        if($ingredient2 != $ingredient1) {
        echo $ingredient1." - ".$ingredient2."<br/>";
        }
        }
        }

        Une idée ??

        Merci
        0
        1. PS : Désolé pour les noms des variables, j'les ai changés pour poster ici, et j'ai oublié de changer les noms partout ... le problème ne vient pas de ces noms !
          0