pb de pointeur ? avec mysql_fetch_array (ou assoc, row...)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : pb de pointeur ? avec mysql_fetch_array (ou assoc, row...)

par toto37 » 24 août 2005, 00:24

<?php
$resultat = mysql_query("...ma requête...");

while ($row = mysql_fetch_assoc($resultat))
{
printf ("résultat : %s <br>", $row['nom_du_champ_de_la_table']);
}

?>

ce code la suffit[/code]

par Cyrano » 23 août 2005, 18:29

Et pour ton code, essaye sous cette forme :
<?php
$resultat = mysql_query("...ma requête...");
$num = mysql_num_rows($resultat);
if ($num > 0)
{
    while ($row = mysql_fetch_assoc($resultat))
    {
        printf ("résultat : %s <br>", $row['nom_du_champ_de_la_table']);
    }
}
?>

par Invité » 23 août 2005, 14:16

C'est exactement ça : je fais une lecture de $resultat dans ma boucle if un peu avant.

Merci par contre pour la fonction mysql_data_seek, je sais maintenant comment réinitialiser le pointeur !!! J'ai donc la réponse à ma question :D

par Ripat » 23 août 2005, 13:54

Tu dois avoir une lecture du 'resulat' plus haut dans le code. Chaque lecture de $résulat avancera le pointeur d'une position. Pour t'en assurer, replace le pointeur de résultat sur le début du recordset renvoyé par MySQL:
mysql_data_seek($resultat, 0);

par Invité » 23 août 2005, 13:53

En fait, j'ai déjà testé les trois ! (mysql_fetch_array, row, et assoc), mais j'ai trouvé entre temps le pb :

je fais un peu plus haut dans mon code appel à la même fonction (sur la même requête) dans une structure conditionnelle (if). Même si la condition n'est pas vérifiée, le fait d'avoir fait appel à la fonction une fois décale logiquement le pointeur de 1. cqfd

Je me pose donc la question : commente réinitialise-t-on le pointeur sur le résultat d'une requête mysql_query ?...

pb de pointeur ? avec mysql_fetch_array (ou assoc, row...)

par ricky » 23 août 2005, 12:33

Bonjour,

je n'ai pas eu le courage de lire les 52 autres pages pour voir si le pb était déjà référencé ou non, si c'est le cas, désolé pour la redite!

Voici un problème tout simple en apparence, mais impossible de comprendre pourquoi ça marche pas :? :

quand j'effectue une requête SQL dans ma bdd, pas de souci.

Par contre, quand j'extraie le résultat à l'aide de mysql_fetch_row par exemple et d'une boucle while, impossible de récupérer la première ligne du résultat !!
Si mysql_num_rows(...) me donne la valeur 3 par exemple suite à ma requête SQL, j'obtiens seulement 2 lignes avec le code suivant, le 1er résultat rencontré étant zappé :

$resultat=
mysql_query("...ma requête...")
$num=
mysql_num_rows($resultat);
if ($num>0)
{
while ($row=
mysql_fetch_row($resultat)) printf ("résultat : %s <br>", $row[0]);
}


J'imagine que c'est un pb de pointeur, mais impossible de rencontrer une trace de ce pb quelquepart sur le net.

Merci par avance pour votre aide ... :wink: