Il n'affiche pas le premier enregistrement

Résolu
zezinand0 Messages postés 6 Statut Membre -  
 Zaptoz -
Bonjour,

J'ai un site en php et une base de données relié au même. Mon probleme est qu'il n'affiche pas le premier enregistrement de la table à afficher.

J'explique mieux, j'ai un menu derroulant "modules" qui contient les page modules_ich.php et modules_mas.php. et cette page modules_ich.php permet l'affichage des 5 modules ich qui sont dans la table modules. Le problème est qu'il affiche que 4 donc pas le premier. je vous laisse le code. Merci beaucoup d'avance ;).

<?php
// le champ modules.download c'est pour distinguer les modules ich de mas.
$ReqSQL= "SELECT * FROM Modules WHERE modules.download='ich'";

//connexion a la BD
$Resultat= connexion($ReqSQL);

if (@mysql_fetch_array($Resultat))
{
echo "<table align='center' border='1'><tr>";
echo "<td>Nom du Module</td>";
echo "<td>Description</td>";
echo "<td></td></tr>";

while ($ligne = mysql_fetch_array($Resultat))
{
$id=$ligne['IDModule'];
echo "<tr><td>".$ligne['Nom_module']."</td>";
echo "<td>".$ligne['description']."</td>";
echo "<td><a href='page_user.php?conteneur=choix_module& qNom=".$ligne['Nom_module']."&qID=".$ligne['IDModule']."''>Download</a></td></tr>";
}
echo "</table>";
}
?>

2 réponses

  1. le père
     
    Bonjour

    C'est normal que la première ligne ne soit pas affichée.

    Tu récupères une ligne de la réponse chaque fois que tu fais mysql_fetch_array($Resultat); c'est pour ça que tu fais ta boucle while ($ligne = mysql_fetch_array($Resultat)).

    Mais avant, tu as déjà fait if (@mysql_fetch_array($Resultat)) : tu as donc déjà lu la première ligne avant de commencer ta boucle !

    De plus, ce test est farfelu, je pense que tu voulais tester s'il y avait au moins une réponse. Il fallait faire :
    if (mysql_num_rows($Resultat)>0) 


    Et tu avais utilisé @ : ne t'en sers jamais pour cacher une erreur qui aurait pu être évitée, ici il n'y avait pas lieu de l'utiliser.
    5
    1. Pasco
       
      C'est vrai, une fois que vous implementez l'expression "mysql_fetch_array($Resultat)" avant d'antamer l'affichage proprement dite, il ya une ligne qui ne sera affiché

      Merci
      0
    2. Zaptoz
       
      Merci j'avais le même problème et en remplaçant mon if par un if du même genre que le tien, ça fonctionne.
      Mon code :

      $req = $bdd->prepare('Ma requête SELECT");
      
      if ($donnees = $req >0) { 
        while ($donnees = $req->fetch()) {
          echo ($donnees['commentaire']);
        }
      }
      else
      echo('<h4 style="text-align: center;">Aucun Commentaires</h4>');	 
      
      0
  2. zezinand0 Messages postés 6 Statut Membre
     
    Bonjour le père,

    Mais oui! je suis très con... c'est juste que il n'avait pas d'erreur mais réellement je lit la première ligne dans mon test -.-'. J'ai juste changé mon if par le votre et ça a marché de suite =).

    Merci beaucoup le père pour la vitesse de réponse et pour la réponse
    0