Rechercher : dans
Par :

PHP - Boucle infinie

Dernière réponse le 26 aoû 2007 à 16:41:27 Anah, le 26 aoû 2007 à 15:07:40 
 Signaler ce message aux modérateurs

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
Configuration: Mac OS X
Firefox 2.0.0.6

Meilleures réponses pour « PHP Boucle infinie » dans :
PHP - Structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot clé true à 1...
Java: Les structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditonnelle les instructions qui permettent de tester si une condition est vraie ou non. Ces structures conditionnelles peuvent être associées à des structures qui se répètent...
Perl - Les structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditonnelle les instructions qui permettent de tester si une condition est vraie ou non. Ces structures conditionnelles peuvent être associées à des structures qui se répètent...

1

mik@, le 26 aoû 2007 à 15:17:54

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)

Répondre à mik@

2

Anah, le 26 aoû 2007 à 15:28:09

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.

Configuration: Mac OS X
Firefox 2.0.0.6

Répondre à Anah

3

mik@, le 26 aoû 2007 à 16:00:36

J'ai trouvé sa je crois que sa peut t'aider :
http://www.vulgarisation-informatique.com/mysql-fetch.php

Répondre à mik@

4

anas rouetbi, le 26 aoû 2007 à 16:00:43

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!
Configuration: Windows XP
Firefox 2.0.0.6

Répondre à anas rouetbi

5

Anah, le 26 aoû 2007 à 16:05:51

Ca c'est si j'utilise mysql_fetch_array ou bien que j'utilise la commande list()

Configuration: Mac OS X
Firefox 2.0.0.6

Répondre à Anah

6

mik@, le 26 aoû 2007 à 16:15:11

Remplace ton while par ceci peut etre que sa peut macher?

while($classement=mysql_fetch_row($res_classement))

Répondre à mik@

7

anas rouetbi, le 26 aoû 2007 à 16:17:26
  • +3

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));
?>
Configuration: Windows XP
Firefox 2.0.0.6

Répondre à anas rouetbi

8

Anah, le 26 aoû 2007 à 16:24:58

Impec ca marche :D
Merci beaucoup. Maintenant vais essayer de comprendre tout ça comment ça marche ^^

Configuration: Mac OS X
Firefox 2.0.0.6

Répondre à Anah

9

 anas rouetbi, le 26 aoû 2007 à 16:41:27

Je t'en pris!
N'oubli pas de mettre ton post en etat "Resolu" ;-)
Bonne continuation

Configuration: Windows XP
Firefox 2.0.0.6

Répondre à anas rouetbi