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

Fermé
Wilper - 27 juil. 2009 à 22:24
 Wilper - 28 juil. 2009 à 14:02
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
A voir également:

4 réponses

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
Merci beaucoup pour ta réponse et pour l'explication !
0
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
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