OVH Cloud OVH Cloud

[PHP] réutiliser un recordset plusieur fois sur la même page ?

1 réponse
Avatar
Christian Gayton
Salut,
Un truc tout con qui me fatigue là ...
En PHP, admettons que je fasse ma requête une fois, et que je récupère mon
rs
Si dans un boucle qui me permet de créer un form un peu complexe, je veux
utiliser ce rs pour remplir plusieurs select par exemple, une fois que j'ai
fait le premier mysql_fetch_array dans la boucle, je n'ai plus rien à
disposition, et les select suivant sont vides, je suis obligé de refaire la
requête à chaque fois....
Exemple (chuis pas sûr d'être clair :)

while($myrow = mysql_fetch_array($prepa)){
echo '<tr class="txt">';
echo '<td>'.$myrow["gamme"].'</td>';
echo '<td>'.$myrow["origine"].'</td>';
echo '<td>'.$myrow["famille"].'</td>';
echo '<td><select name="id_pays" class="input">';
while($mypays = mysql_fetch_array($pays)){
printf('<option value="%s">%s %s', $mypays["id_pays"], $mypays["pays"],
"\n");
}
echo '</td>';
echo '<td><select name="droit" class="input"><option
value="0">NON</option><option value="1">OUI</option></select></td></tr>';
}

ça ça marche pas, seule la première ligne du tableau à le select pays
rempli, les autres sont à vide
je me dis qu'il me faudrait réinitialiser $mypays à vide par exemple, mais
pas trouvé la syntaxe...

En attendant, si je rajoute la requête à chaque passage, là évidemment ça
marche, mais je trouve ça débile et consommateur cpu serveur...

C'est quoi l'astuce ?

Merci
Christian

1 réponse

Avatar
J-Marie PETIT
Je vois une solution (assez bête mais je la sens bien) :
-Faire la requête pays AVANT l'autre et stocker le résultat dans un tableau.
- Fermer la boucle
- Faire ensuite, dans la seconde boucle, la requête générale (gamme -
origine - famille) et utiliser le tableau stocké dans la premièrte boucle
(qui lui, ne variera pas si j'ai bien compris) pour compléter...
Je ne sais pas si je suis plus clair que toi... Bon courage !