Manque toujours la première donnée

Répondre
jackbocar
le 07/05/2007 à 10:18
jackbocar
Bonjour,

Qui peux me dire pourquoi avec ces différents scripts SELECT :
//mysqli_fetch_assoc - //mysqli_fetch_array - //mysqli_fetch_row ;
Le seul qui me sort l'intégralité des données est : "mysqli_fetch_object" ?

Avec les autres, il me manque systématiquement le premier enregistrement, voir le dernier aussi.

Lorsque j'ai qu'une seule donnée, la page est vide.

Et pour mes liens en 'PHP_SELF' :
  1. <?php
  2. echo '<a href="'.$_SERVER['PHP_SELF'].'?page=encyclo_A#'.stripslashes(htmlentities(trim($data['id']))).'" class="menuNav">'.stripslashes(htmlentities(trim($data['nom']))).'</a><br />';
  3. ?>


Le script qui fonctionne très bien et qui est ( MYSQLI_FETCH_OBJET) placé dans mes liens est inexploitable…

  1. <?php
  2. $link = mysqli_connect("localhost", "user", "password", "base");

  3. if (mysqli_connect_errno()) {
  4. printf("?chec de la connexion : %s\n", mysqli_connect_error());
  5. exit();
  6. }
  7. //mysqli_fetch_object
  8. $query = "SELECT nom, code_post FROM Ville";
  9. if ($result = mysqli_query($link, $query)) {

  10. while ($obj = mysqli_fetch_object($result)) {
  11. printf ("%s (%s)\n", $obj->nom, $obj->code_post);
  12. }
  13. mysqli_free_result($result);
  14. }
  15. mysqli_close($link);
  16. ?>



J'ai essayé des tas de combinaisons, le résultat est décevant.

Mon code complet :

  1. <?php
  2. $link = mysqli_connect("localhost", "user", "password", "base");

  3. if (mysqli_connect_errno()) {
  4. printf("Échec de la connexion : %s\n", mysqli_connect_error());
  5. exit();
  6. }

  7. $query = 'SELECT id, nom, nom_lien, news FROM encyclo WHERE nom REGEXP "^A" ORDER BY nom ASC';
  8. $result = mysqli_query($link, $query);
  9. if ($result = mysqli_query($link, $query)) {
  10. $data = mysqli_fetch_array($result);


  11. while ($data = mysqli_fetch_array($result)) {
  12. $id=$data['id'];
  13. $nom=$data['nom'];
  14. $nom_lien=$data['nom_lien'];
  15. $news=$data['news'];
  16. $news = nl2br($news);

  17. echo '<a name="'.stripslashes(htmlentities(trim($data['id']))).'"></a>';
  18. echo '<p class="p">';
  19. echo'<a href="../encyclo_pages/'. stripslashes(htmlentities(trim($data['nom']))).'" class="Lnav">'stripslashes(htmlentities(trim($data['nom_lien'])))'</a> &nbsp;';
  20. echo '<span class="com">'. stripslashes(htmlentities(trim($data['news']))).'</span><br />';
  21. echo '<br /><a href="#" class="Lnav">Top</a><br /><br />';
  22. echo '</p>';
  23. }
  24. }
  25. mysqli_free_result($result);

  26. echo '</div>';
  27. echo '<div id="sidebar" class="column"><div class="menuBarTop">Commanderies [A]</div>';

  28. //Ci-dessous le menu

  29. $query = 'SELECT id, nom FROM enclyclo WHERE nom REGEXP "^A" ORDER BY nom ASC';
  30. $result = mysqli_query($link, $query);
  31. if ($result = mysqli_query($link, $query)) {
  32. $data = mysqli_fetch_array($result);

  33. while ($data = mysqli_fetch_array($result)) {
  34. $id=$data['id'];
  35. $nom=$data['nom'];

  36. echo '<a href="'.$_SERVER['PHP_SELF'].'?page=encyclo_A#'.stripslashes(htmlentities(trim($data['id']))).'" class="menuNav">'.stripslashes(htmlentities(trim($data['nom']))).'</a><br />';
  37. }
  38. }
  39. mysqli_free_result($result);
  40. mysqli_close($link);
  41. ?>



Merci de votre aide

Jack Bocar
zebden
le 07/05/2007 à 11:05
zebden
Lu,

alors

mysqli_fetch_array retourne un tableau à index numérique et un tableau associatif (en gros les clefs sont les noms des champs).

mysqli_fetch_row retourne qu'un tableau à index numérique

mysqli_fetch_assoc retourne qu'un tableau associatif.

Donc pour toi mieux vaut utiliser mysqli_fetch_assoc

Ensuite pour ton erreur, tu fais appel avant ta boucle à la fonction mysqli_fetch_array qui va donc aller chercher le première ligne de la table Mysql, inévitablement le pointeur passe à la seconde ligne.

donc ici :
if ($result = mysqli_query($link, $query)) {
$data = mysqli_fetch_array($result);

enlève $data = mysqli_fetch_array($result);

Voilà,
bon courage ^^
zebdinou pour les intimes / Blog : http://www.zebden.fr
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours