PHP - Boucle infinie

Résolu/Fermé
Anah Messages postés 10 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 20 septembre 2007 - 26 août 2007 à 15:07
anas rouetbi Messages postés 31 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 5 décembre 2008 - 26 août 2007 à 16:41
Bonjour à tous,

J'ai un problème avec une boucle. J'aimerais afficher un tableau avec des info qui sont sur ma BD.
J'ai dans la table 'chrono' deux entrés. Pourtant, seule la première s'affiche et se répète à l'infini.
Ma table 'chrono' se compose de 6 champs : id, date, pilote, temps_seconde, temps_milliseconde, voiture .

J'aimerais savoir pourquoi seule la première entré s'affiche et pourquoi elle continue à l'infini.
voici mon code :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
  <title>Chrono</title>
 </head>
 <body>
  <table border="1" width="500px">
   <tr>
    <td width="25%" align="center" bgcolor="#FFFF00">DATE</td>
    <td width="25%" align="center" bgcolor="#FFFF00">PILOTE</td>
    <td width="25%" align="center" bgcolor="#FFFF00">TEMPS</td>
    <td width="25%" align="center" bgcolor="#FFFF00">VOITURE</td>
   </tr>
<?php
$host="ftpperso.free.fr";
$user="latitemumu";
$mdp="*********";
$connection=mysql_connect($host,$user,$mdp);
$db="latitemumu";
mysql_select_db($db,$connection);
$req_classement="SELECT * from chrono ORDER BY 'temps_seconde' and 'temps_milliseconde'";
$res_classement=mysql_query($req_classement,$connection);
$classement=mysql_fetch_row($res_classement);
while ($classement) {
?>
   <tr>
    <td width="25%"><?php echo $classement[1]; ?></td>
    <td width="25%"><?php echo $classement[2]; ?></td>
    <td width="25%"><?php echo $classement[3].'"'.$classement[4]; ?></td>
    <td width="25%" align="center"><img src="img/voiture/<? echo $classement[5]; ?>" /></td>
   </tr>
<?php
}
?>
  </table>
 </body>
</html>



Merci d'avance

9 réponses

anas rouetbi Messages postés 31 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 5 décembre 2008 6
26 août 2007 à 16:17
salut,
oui tas raison jaV pas fait attention.
Alors pkoi tu fais pas ca:

<?php
$host="ftpperso.free.fr";
$user="latitemumu";
$mdp="*********";
$connection=mysql_connect($host,$user,$mdp);
$db="latitemumu";
mysql_select_db($db,$connection);

$req_classement = "SELECT * from chrono ORDER BY 'temps_seconde' and 'temps_milliseconde'";
mysql_query($req_classement,$connection) or die(mysql_error());
$classement = mysql_fetch_assoc($res_classement);

do {
?>
<tr>
    <td width="25%"><?php echo $classement['date']; ?></td>
    <td width="25%"><?php echo $classement['pilote']; ?></td>
    <td width="25%"><?php echo "".$classement['temps_seconde']." ".$classement['temps_milliseconde'].""; ?></td>
    <td width="25%" align="center"><img src="img/voiture/<?php echo $classement['voiture']; ?>" /></td>
 </tr>
<?php
} while ($classement = mysql_fetch_assoc($res_classement));
?>
3
mik@ Messages postés 35 Date d'inscription dimanche 26 août 2007 Statut Membre Dernière intervention 26 septembre 2007 9
26 août 2007 à 15:17
enfin je m'y connai pas trop en php mais en c++ mais comme ces deux languages sont assez similaire je dirais que l'erreur provient de ton while.

while ($classement) => si je ne me trompe pour que ta boucle s'arrete il lui faut une condition hors la je n'en vois pas.
en gros faudrai mettre:

while ($classement != valeur)
1
Anah Messages postés 10 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 20 septembre 2007 2
26 août 2007 à 15:28
Et bien normalement, c'est l'existance de la varriable $classement qui est la condition. Elle vient du mysql_fetch_row, qui est sensé auto incrémenter et arrêter la boucle quand elle ne trouve plus de résultat... mais elle ne fait rien de tout ça apparement.
1
mik@ Messages postés 35 Date d'inscription dimanche 26 août 2007 Statut Membre Dernière intervention 26 septembre 2007 9
26 août 2007 à 16:00
j'ai trouvé sa je crois que sa peut t'aider :
https://www.vulgarisation-informatique.com/mysql-fetch.php
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Anah Messages postés 10 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 20 septembre 2007 2
26 août 2007 à 16:24
Impec ca marche :D
Merci beaucoup. Maintenant vais essayer de comprendre tout ça comment ça marche ^^
1
anas rouetbi Messages postés 31 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 5 décembre 2008 6
26 août 2007 à 16:00
Salut,
essaye ca:

<tr>
    <td width="25%"><?php echo $classement['date']; ?></td>
    <td width="25%"><?php echo $classement['pilote']; ?></td>
    <td width="25%"><?php echo "".$classement['temps_seconde']." ".$classement['temps_milliseconde'].""; ?></td>
    <td width="25%" align="center"><img src="img/voiture/<? echo $classement['voiture']; ?>" /></td>
 </tr>


Ca devrait marchait en principe.
Tiens moi au courant!
0
Anah Messages postés 10 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 20 septembre 2007 2
26 août 2007 à 16:05
Ca c'est si j'utilise mysql_fetch_array ou bien que j'utilise la commande list()
0
mik@ Messages postés 35 Date d'inscription dimanche 26 août 2007 Statut Membre Dernière intervention 26 septembre 2007 9
26 août 2007 à 16:15
remplace ton while par ceci peut etre que sa peut macher?

while($classement=mysql_fetch_row($res_classement))
0
anas rouetbi Messages postés 31 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 5 décembre 2008 6
26 août 2007 à 16:41
Je t'en pris!
N'oubli pas de mettre ton post en etat "Resolu" ;-)
Bonne continuation
0