Il n'affiche pas le premier enregistrement

Résolu/Fermé
zezinand0 Messages postés 5 Date d'inscription mardi 17 janvier 2012 Statut Membre Dernière intervention 19 janvier 2012 - 17 janv. 2012 à 19:29
 Zaptoz - 26 juin 2017 à 02:39
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

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
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
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
zezinand0 Messages postés 5 Date d'inscription mardi 17 janvier 2012 Statut Membre Dernière intervention 19 janvier 2012
18 janv. 2012 à 09:27
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