mysql_fetch_array

Invité
Invité n'ayant pas de compte PHPfrance

20 mai 2005, 13:13

Hello à tous.
Je prends dans ma table plusieurs lignes.
Lorsque je veux les afficher, je me rends compte que la première ligne est ignorée (le rang 0), et que ça m'affiche en premier le rang 1 (donc la seconde ligne) de mon résultat.

Voici ce que je fais :

Code : Tout sélectionner

$index = array(); $row = mysql_fetch_array($page, MYSQL_BOTH); echo $row["texte"]; do { $index[] = $row["texte"];} while ( $row = mysql_fetch_array($page)) ; foreach($index as $key => $texte) { echo "<strong>Page ".$key."</strong><br />$texte<br /><br />\n";}
Quelqu'un voit-il une explication à mon pb ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

20 mai 2005, 14:24

$row = mysql_fetch_array($page, MYSQL_BOTH); // tu sélectionne le rang 0
...
while ( $row = mysql_fetch_array($page)) ;

Dans la 1ere ligne tu récupère le rang 0

Dans le while tu récupère toutes les lignes qui restent, soit de la ligne 1 à la dernière ligne !!!!
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

20 mai 2005, 14:30

Je me permet de revenir car je trouve que ton code est pas très optimisé !!!

tu parcours un tableau pour créer un tableau que tu parcours pour l'afficher ... le tableau intermédaire est en trop !!
$index = array();
$row = mysql_fetch_array($page, MYSQL_BOTH);
echo $row["texte"];

for ($i = 1; $row = mysql_fetch_array($page) ; $i++) {
  echo "<strong>Page ".$i."</strong><br />$texte<br /><br />\n";
}
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

20 mai 2005, 14:48

impeccable ça fonctionne :)
Merci bcp !