Afficher toutes les lignes d'une requête

Fermé
philippe - 5 nov. 2015 à 21:15
 philippe - 6 nov. 2015 à 14:02
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 !!

$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.
0
Merci pour ton aide.
OK pour les noms des champs j'ai modifié
les balises php ? c'est [edit]
0
Utilisateur anonyme > philippe
6 nov. 2015 à 12:29
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>
0
j'esssaierai d'y penser
0