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 ?
A voir également:
- Afficher toutes les lignes d'une requête
- Afficher appdata - Guide
- Dans le diaporama à télécharger, les diapositives s’enchaînent automatiquement. combien de temps la diapositive crayon met-elle à s’afficher ? combien de temps reste-t-elle affichée à l’écran ? ✓ - Forum Powerpoint
- Faites afficher avec un fond coloré les cellules qui contiennent une valeur comprise entre 250 et 350. quel nombre est dessiné en surbrillance ? ✓ - Forum Excel
- Afficher les commentaires word - Guide
- Filtre excel ne fonctionne pas sur toutes les lignes ✓ - Forum Excel
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) :
[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 :
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.
OK pour les noms des champs j'ai modifié
les balises php ? c'est [edit]