Afficher toutes les lignes d'une requête

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 !!

$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

  1. Utilisateur anonyme
     
    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
    1. philippe
       
      Merci pour ton aide.
      OK pour les noms des champs j'ai modifié
      les balises php ? c'est [edit]
      0
      1. Utilisateur anonyme > philippe
         
        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
    2. philippe
       
      j'esssaierai d'y penser
      0