Page 1 sur 1

Impossible d'attaquer une requete avec mysql_fetch_array

Posté : 28 janv. 2007, 21:07
par Vikchill
Bonjour,

j'ai sauté le peu il y a peu vers Linux, ça n'a probablement rien à voir mais je ne comprends pas pourquoi ce code ne me retourne rien:
$requete = "SELECT fichier FROM documentor";
$resultat = mysql_query($requete);
while($valeur = mysql_fetch_array($resultat, MYSQL_ASSOC));
        {
        echo $valeur['fichier'].'<br />';;
        }
Alors que plus loin, ceci fonctionne:
$nlignes = mysql_num_rows($resultat);
$div1 .= 'Il devrait y avoir '.$nlignes.' lignes.<br />';
$i = 0;
while($i<$nlignes)
      {
      $div1 .= mysql_result($resultat, $i, "nom").'<br />';
      $i++;
      }
Quelqu'un pourrait-il me donner une piste?

Posté : 28 janv. 2007, 23:29
par Ultim4T0m
Bonsoir,

Pourquoi ne pas utiliser mysql_fetch_assoc($resultat) plutôt que mysql_fetch_array($resultat, MYSQL_ASSOC) ?

Ensuite, il est préférable de vérifier que la requête fonctionne correctement, grâce par exemple à
$resultat = mysql_query($requete) or die("Erreur : " . mysql_error());

Posté : 29 janv. 2007, 01:11
par Truc
Tu as un point virgule de trop sur la ligne du while()
et un double point virgule pour le echo...

Il y a eu des promo sur les points virgule ? :lol:

Posté : 29 janv. 2007, 10:14
par Vikchill
Merci à vous de prendre un peu de votre temps pour m'aider :)
Pourquoi ne pas utiliser mysql_fetch_assoc($resultat) plutôt que mysql_fetch_array($resultat, MYSQL_ASSOC) ?
J'avais essayé avec mysql_fetch_assoc, sans plus de succès.
Ensuite, il est préférable de vérifier que la requête fonctionne correctement, grâce par exemple à
$resultat = mysql_query($requete) or die("Erreur : " . mysql_error());
Je suis sûr de ma requête, elle a été testée et fonctionne bien. D'ailleurs, avec mysql_result je parviens à attaquer mon jeu de données.

Tu as un point virgule de trop sur la ligne du while()
et un double point virgule pour le echo...
Euh, effectivement, mais je crois que ça viens du copier/coller, j'ai enlever certaines lignes en commentaires qui étaient inutiles. Ca reste à confirmer, et je m'en voudrais beaucoup si c'était ça, mais je ne crois pas que ça soit ça car je rentre dans le while pour en sortir immédiatement: le "<br />" en fin de ligne apparaît une fois, sans rien devant lui.
Il y a eu des promo sur les points virgule ? :lol:
:oops:

Posté : 29 janv. 2007, 10:54
par Ryle
Euh, effectivement, mais je crois que ça viens du copier/coller, j'ai enlever certaines lignes en commentaires qui étaient inutiles. Ca reste à confirmer, et je m'en voudrais beaucoup si c'était ça, mais je ne crois pas que ça soit ça car je rentre dans le while pour en sortir immédiatement: le "<br />" en fin de ligne apparaît une fois, sans rien devant lui.
Et pourtant, c'est bien de là que vient le problème. Le point virgule à la fin de la ligne indique que l'instruction est terminée. Il rentre donc bien dans le test du while, mais ne fait rien puisqu'il n'y a pas d'instruction accolée.
Puis il poursuit le code, trouve les accolades (qu'il ignore dans ce cas, soit dit en passant) exécute le echo, n'affiche rien pour $valeur['fichier'] puisqu'il est en dehors du while, et retourne donc juste le <br /> :)

Posté : 29 janv. 2007, 11:03
par Vikchill
Et pourtant, c'est bien de là que vient le problème. Le point virgule à la fin de la ligne indique que l'instruction est terminée. Il rentre donc bien dans le test du while, mais ne fait rien puisqu'il n'y a pas d'instruction accolée.
Puis il poursuit le code, trouve les accolades (qu'il ignore dans ce cas, soit dit en passant) exécute le echo, n'affiche rien pour $valeur['fichier'] puisqu'il est en dehors du while, et retourne donc juste le <br /> :)
J'avoue que plus le temps passe, plus j'ai l'impression que ça pourrait bien être l'explication de mon problème... J'espère vraiment que c'est pas ça tellement c'est stupide comme erreur, j'aime pas "déranger" les gens pour ce genre de choses, mais je ne pourrais rien confirmer avant ce soir.

En tout cas merci à tous, je vous tiens au courant très vite.

[EDIT]Honte sur moi...