[RESOLU] boucle infinie

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] boucle infinie

Re: boucle infinie

par Hélène » 02 mai 2013, 10:31

Merci à vous pour vos explications :D

Re: boucle infinie

par moogli » 02 mai 2013, 10:25

salut,

J'suis trop lent z'avez répondue entre temps mais je poste quand même :mrgreen:

la fonction isset retourne un booleen (true / false => vrai / faux).
tu définie la variable $row avant le while.
lorsque la structure while évalue la condition : isset($row) elle à comme résultat true (car effectivement $row existe).
La traduction d'une boucle while c'est tant que. Donc ton code se traduit en tant que la variable $row existe affiche la ligne.
Ce code produit bien une boucle infinie.

ce que l'on test dans la boucle while c'est le retour de mysql_fetch_assoc (mysql_fetch_array etc etc) car cette (ces) fonction(s) retourne(nt) false lorsqu'il n'y a plus de résultat à fournir.
ton code devient donc
<?php
$query="SELECT id,nom_user,nb_co FROM jm_users ";
$req=mysql_query($query);

echo "<table>
<thead>
<tr>
        <th>ID utilisateur</th>
        <th>Nom utilisateur</th>
        <th>Nombre connexion</th>
</tr>
</thead>
<tbody>";
        
while ($row=mysql_fetch_row($req);) {
        echo '<tr>
                <td>'.$row[0].'</td>
                <td>'.$row[1].'</td>
                <td>'.$row[2].'</td>
        </tr>';
}

echo '</tbody></table>';
 
je te conseil :
- D'utiliser l'extension mysqli plutot que l'extension mysql qui sera supprimer dans une future version
- D'utiliser la concaténation (comme je l'ai fait dans mon exemple) afin de rendre ton code plus lisible et d'éviter les erreurs d'interprétation de php (qui doit déterminier si tu veux $row ou $row[0] ou afficher la valeur de $rw plus [0] derrière etc etc.
- De lire ce tuto sur la façon de récupérer les données d'une base de données mysql.
- De te renseigner sur l'utilisation des table html. Comme je te l'ai déja indiqué la balise th ne s'utilise que dans une balise thead.


@+

Re: boucle infinie

par Hélène » 02 mai 2013, 10:24

ah merci j'avais mis
<tr>
                <td>$row['id'];</td>
                <td>$row['nom_user'];</td>
                <td>$row['nb_co'];</td>
        </tr>";

les quotes quoi et ça fonctionnait pas c'est bête ^^

Re: boucle infinie

par Gorbi » 02 mai 2013, 10:14

Ce que veut dire Nicolas c'est que tu n'utilises pas la bonne méthode pour récupérer tes informations, il faut effectivement utiliser la commande mysql_fetch_assoc()
echo "<table>

<tr>
        <th>ID utilisateur</th>
        <th>Nom utilisateur</th>
        <th>Nombre connexion</th>
</tr>";
        
$query="SELECT id,nom_user,nb_co FROM jm_users ";
$req=mysql_query($query);
while($row = mysql_fetch_array($req)) 
				{ 
        echo "<tr>
                <td>".$row['id']."</td>
                <td>".$row['nom_user']."</td>
                <td>".$row['nb_co']."</td>
        </tr>";

}

echo "</table>";
 
Ce code devrait mieux fonctionner, à une erreur de virgule près ;)

Re: boucle infinie

par Hélène » 02 mai 2013, 09:59

Je comprends pas :oops:

Re: boucle infinie

par nicolas » 02 mai 2013, 09:24

Et non seulement elle est infinie mais en plus cela t'affiche tout le temps les mêmes infos.
Je t'invite à aller lire un tutoriel sur la manière de récupérer des infos de mysql ou alors d'aller lire la doc de mysql_fetch_assoc()

boucle infinie

par Hélène » 02 mai 2013, 08:49

Quelqu'un sait pourquoi j'ai une boucle infinie avec ce code ? Quand je teste la requête sur PhpMyAdmin je n'ai pas de boucle infinie
$query="SELECT id,nom_user,nb_co FROM jm_users ";
$req=mysql_query($query);
$row=mysql_fetch_row($req);

echo "<table>
<tr>
	<th>ID utilisateur</th>
	<th>Nom utilisateur</th>
	<th>Nombre connexion</th>
</tr>";
	
while (isset($row)) {
	echo "<tr>
		<th>$row[0]</th>
		<th>$row[1]</th>
		<th>$row[2]</th>
	</tr>";

}

echo "</table>";