Afficher toutes les lignes d'une requête
philippe
-
philippe -
philippe -
Bonjour,
Je n'arrive pas à afficher dans une table toutes les lignes de ma requête.
le code suivant me donne bien 2 lignes mais dans le tableau j'ai 2 fois la première ligne !!
Quelqu'un peut me dire ce qui cloche ?
Je n'arrive pas à afficher dans une table toutes les lignes de ma requête.
le code suivant me donne bien 2 lignes mais dans le tableau j'ai 2 fois la première ligne !!
$requete = "SELECT * FROM messages ";
$resultat = $mysqli->query($requete) or die ('Erreur '.$requete.' '.$mysqli->error());
$lignes = mysqli_num_rows($resultat);
$row = mysqli_fetch_array($resultat);
echo $lignes;
for ($l=0; $l < $lignes; $l++){
$date = $row[1];
$nom = $row[3];
$prenom =$row[4];
$texte = $row[7];
echo '<tr><td class="ligne"><input type="radio" name="choix" value="1"</td><td class="ligne">'.$date.'</td><td class="ligne">'.$prenom.' '.$nom.'</td><td class="ligne">'.$texte.'</td><td class="ligne"><textarea name="ma_saisie" style="width:317px;font-size:12px"> </textarea></td></tr>';
}
Quelqu'un peut me dire ce qui cloche ?
1 réponse
-
Bonjour
Avec mysqli_fetch_array, tu técupères une ligne de résultat.
Mais ensuite, $row n'est jamais modifié à l'intérieur de ta boucle : tu affiches toujours la même chose. Il faut refaire un mysqli_fetch_array à chaque boucle pour changer de ligne. C'est pourquoi on écrit habituellement ceci (sans avoir besoin de connaître le nombre de lignes au départ) :$requete = "SELECT * FROM messages "; $resultat = $mysqli->query($requete) or die ('Erreur '.$requete.' '.$mysqli->error()); // $lignes = mysqli_num_rows($resultat); inutile while ($row = mysqli_fetch_array($resultat)) { $date = $row[1]; $nom = $row[3]; $prenom =$row[4]; $texte = $row[7]; echo '<tr><td class="ligne"><input type="radio" name="choix" value="1"</td><td class="ligne">'.$date.'</td><td class="ligne">'.$prenom.' '.$nom.'</td><td class="ligne">'.$texte.'</td><td class="ligne"><textarea name="ma_saisie" style="width:317px;font-size:12px"> </textarea></td></tr>'; }
[edit]
Remarques en passant :
- Utilise les balises de code php, c'est plus lisible
- Utilise les noms de tes champs plutôt que des nombres pour extraire les éléments de $row :$date = $row['date'];$nom = $row['nom'];
, c'est plus facile à comprendre et ça évite des erreurs d'indice.-
- Les balises PHP, c'est quand tu rédiges ton message : tu sélectionnes le texte à colorier, tu cliques sur la petite flèche qui pointe vers le bas et qui se trouve dans le coin en haut à droite de la fenêtre de saisie des messages. Tu vois une liste de langages, tu choisis le tien. ça revient à écrire ton texte entre < code php> et < /code>
-
-