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' :
<?php
echo '<a href="'.$_SERVER['PHP_SELF'].'?page=encyclo_A#'.stripslashes(htmlentities(trim($data['id']))).'" class="menuNav">'.stripslashes(htmlentities(trim($data['nom']))).'</a><br />';
?>


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

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

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

while ($obj = mysqli_fetch_object($result)) {
printf ("%s (%s)\n", $obj->nom, $obj->code_post);
}
mysqli_free_result($result);
}
mysqli_close($link);
?>



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

Mon code complet :

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

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

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


while ($data = mysqli_fetch_array($result)) {
$id=$data['id'];
$nom=$data['nom'];
$nom_lien=$data['nom_lien'];
$news=$data['news'];
$news = nl2br($news);

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

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

//Ci-dessous le menu

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

while ($data = mysqli_fetch_array($result)) {
$id=$data['id'];
$nom=$data['nom'];

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



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