bigornot Posté 1 Juin 2004 Posté 1 Juin 2004 j'ai un problème dans une boucle : normalement, en faisant $i = 0 ; while($numrows>$i){ blabla $i++ } et bien, a chaque fois qu'on montrait un enregistrement de la table, i augmentait de 1 , et, au bout d'un moment, il devenait egal à $numrows , qui contient le nombre d'enregistrement, alors, la boucle est ... FERMéE !! mais là, ca ne marche pas, il me met une parse error... voici le code : <?php echo "$msg";echo '<a href="modl.php?main=critik">Ajouter une critique</a>';include("galerie.php");$db = mysql_connect($sql,$login,$pass);mysql_select_db($nom,$db);$q = mysql_query("select * from critik order by id desc");$no = mysql_query("select nom from critik order by id desc");$da = mysql_query("select date from critik order by id desc");$he = mysql_query("select heure from critik order by id desc");$cr = mysql_query("select critik from critik order by id desc");$em = mysql_query("select email from critik order by id desc");$au = mysql_query("select auteur from critik order by id desc");$n = mysql_fetch_array($q);$i = "0";while($n>$i){$nom = mysql_result($no,"nom");$date = mysql_result($da,"date");$heure = mysql_result($he,"heure");$critik = mysql_result($cr,"critik");$email = mysql_result($em,"email");$auteur = mysql_result($au,"auteur");echo "<br><br><br><br>Critique postée par $nom , le : $date a $heure <br>";echo "$phrase";echo "<br><br> $critik ";echo "<br><br><a href='mailto: $email'>son adresse : $email</a>";echo "<br><br><br> $nom est auteur de : $auteur ";$i++}echo '<br><br><br><a href="modl.php?main=critik">Ajouter une critique</a>';?> si vous pouvez m'aider, ce serait bien ... merci d'avance ! :-* j'ai aussi essayé $i++; et .... la boucle ne se boucle pas ... jamais ... donc, avis a ceux qui voudraient maider : c'est pas là, le problème ! :-)
Dan Posté 1 Juin 2004 Posté 1 Juin 2004 Bonjour, Dans : while($n>$i){ ... Tu compares une array à un nombre entier... il est clair que cela ne pourra jamais être correct. Tu devrais utiliser mysql_num_rows() pour obtenir le nombre d'enregistrements et utiliser celui là dans ta boucle while() Dan
bigornot Posté 1 Juin 2004 Auteur Posté 1 Juin 2004 ha ? je vais essayer ... mais qu'est ce que la difference entre un array et un num_rows ?
bigornot Posté 1 Juin 2004 Auteur Posté 1 Juin 2004 bon, maintenant, il me met le meme message en triple ( sachant qu'il y a 3 messages dans la table )
Anonymus Posté 2 Juin 2004 Posté 2 Juin 2004 mysql_fetch_array te retourne le tableau des résultats, alors que mysql_num_rows te retourne le nombre de lignes du résultat. Il te faudrait donc utiliser mysql_num_rows dans ce cas là. Mais ton code devrait etre écrit comme ceci : <?php echo "$msg";echo '<a href="modl.php?main=critik">Ajouter une critique</a>';include("galerie.php");$db = mysql_connect($sql,$login,$pass);mysql_select_db($nom,$db);$result = mysql_query("select * from critik order by id desc");while ( $row = mysql_fetch_array($result)){ echo "<br><br><br><br>Critique postée par ".$row['nom']." , le : ".$row['date']." a ".$row['heure']." <br>"; echo $row['phrase']; echo "<br><br> $critik "; echo "<br><br><a href='mailto:".$row['email']."'>son adresse : ".$row['email']."</a>"; echo "<br><br><br> ".$row['nom']." est auteur de : ".$row['auteur']." "; }echo '<br><br><br><a href="modl.php?main=critik">Ajouter une critique</a>';?> En effet, mysql_result fait ressortir un seul champ de la base de données. Or, juste avant, tu demandes (avec la fonction mysql_fetch_array), de ressortir toute la table. Tu devrais donc travailler sur ce résultat, obtenu par mysql_fetch_array, qui : D'un coté te permet d'obtenir toute la table de résultat, d'un autre coté est plus rapide que 6 appels successifs, d'un autre coté, fait double emploi avec mysql_result. Sinon, tu mélanges les apostrophes et double quotes, ce qui rend le débuggage plus difficile. Tantot tu mets : echo "<br><br et tantot tu mets : echo '<br><br> C'est source d'erreurs potentiels. Tu devrais mettre soit l'un soit l'autre, mais pas les deux. Exemple : echo "$msg";echo "<a href=\"modl.php?main=critik\">Ajouter une critique</a>"; Dans cette ligne, d'ailleurs, on voit que tu utillises le meme nom pour 'main' que pour ta table de base de données. Ce n'est pas trop recommandé, dans la mesure où ca peut également générer des erreurs plus loin. Voilà, a+, Anonymus.
bigornot Posté 2 Juin 2004 Auteur Posté 2 Juin 2004 merci, je vais essayer ... mais, pour ca : C'est source d'erreurs potentiels. Tu devrais mettre soit l'un soit l'autre, mais pas les deux. Exemple : CODE echo "$msg"; echo "<a href=\"modl.php?main=critik\">Ajouter une critique</a>"; Dans cette ligne, d'ailleurs, on voit que tu utillises le meme nom pour 'main' que pour ta table de base de données. Ce n'est pas trop recommandé, dans la mesure où ca peut également générer des erreurs plus loin. si je dis echo "<a href="modl.php?">"; il va prendre les " du lien pour ceux du echo, non ?
Dan Posté 2 Juin 2004 Posté 2 Juin 2004 si je dis echo "<a href="modl.php?">";il va prendre les " du lien pour ceux du echo, non ? Tout à fait ! Il faut soit utiliser les simples quotes, soit les faire précéder de \. echo "<a href='modl.php?'>"; echo '<a href="modl.php?">'; echo "<a href=\"modl.php?\">";
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant