Prob d'itération dans boucle while (PHP/Sql)
Wilper
-
Wilper -
Wilper -
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
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:
- Prob d'itération dans boucle while (PHP/Sql)
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Logiciel sql - Télécharger - Bases de données
- Télé samsung s'éteint et se rallume en boucle - Forum Téléviseurs
- Le fichier contient un programme écrit en python. le programme construit un mot secret mais il ne l'affiche pas. modifiez ce programme afin que à chaque itération de la boucle : la variable a augmente de 2 la variable b diminue de 1 ajoutez une instruction pour faire afficher le mot secret construit. quel est ce mot secret ? ✓ - Forum Python
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)
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)
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
$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