Page 1 sur 1

boucle while a l'infinie...

Posté : 01 mai 2008, 22:39
par bruno.rotrou
bonsoir

je viens de découvrir un petit soucis.
jusqu'à présent lorsque je codais pour interroger une BD mysql je faisais ceci:
connexion a la BD .....
$requete=mysql_query(SELECT * FROM table);
while($resultat=mysql_fetch_array($requete)){ action ....;}
tout ce passait très bien. Mais voila que pour des raisons que j'ignore j'ai écris la chose suivante.
connexion a la BD .....
$requete=mysql_query(SELECT * FROM table);
$resultat=mysql_fetch_array($requete);
while($resultat){ action ....;}
et là, ma boucle tourne a l'infinie sur le premier élément du tableau renvoyé par mysql_fetch_array.

je comprends pas pourquoi? while considère tjrs a "true" la var $resultat ????? alors comment fait t'il ds l'autre méthode
(while($resultat=mysql_fetch_array($requete)))
quelque chose m'échappe...
:wink:
A+

Posté : 01 mai 2008, 22:52
par Cyrano
La première formulation était la meilleure et on peut l'améliorer en codant plus strictement :
while(false !== ($resultat = mysql_fetch_array($requete)))
{
    action ....;
} 
En traitant les données retournées, à chaque tour de boucle, le pointeur avance dans le "resultset" : si tu définis ton résultset avant la boucle, il prendra la première ligne et n'ira pas plus loin : donc ta variable ne vaudra jamais false et la boucle ne s'arrêtera qu'avec le timeout de la configuration de PHP.

merci

Posté : 02 mai 2008, 00:31
par bruno.rotrou
merci, c'est très clair.
merci aussi pour le petit plus
A+
que de + :wink: