Probème Fetch Array + While

Probème Fetch Array + While - PHP - Programmation

Marsh Posté le 02-11-2006 à 11:28:27    

Bonjour à tous,
Voici deux lignes de code :
 
[...]
$r1=mysql_query("SELECT mail FROM account ORDER BY mail ASC" ); (Ligne 3)
while ( $row = mysql_fetch_array($r1)){ (Ligne 4)
[...]
 
Et cela m'affiche dans le navigateur:
 
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/site/web/www/test.php on line 4
 
Pourtant, quand je tape la requete SELECT mail FROM account ORDER BY mail ASC dans mon navigateur, cela fonctionne et affiche tous mes enregistrements.
 
Comment corriger mon While et mon Fetch Array pour que cela soit utilisable ?
 
Merci d'avance !

Reply

Marsh Posté le 02-11-2006 à 11:28:27   

Reply

Marsh Posté le 02-11-2006 à 11:42:00    

as-tu testé si mysql_query retournait bien un résultat SQL ou bien false ? A mon avis non.

Reply

Marsh Posté le 02-11-2006 à 11:42:44    

Non pas testé .. comment dois je faire ?

Reply

Marsh Posté le 02-11-2006 à 12:00:12    

$r1=mysql_query("SELECT mail FROM account ORDER BY mail ASC" );
if (!$r1) {
   die('Requête invalide : ' . mysql_error());
}
 
Là ca ne m'affiche aucune erreur ..

Reply

Marsh Posté le 02-11-2006 à 15:06:26    

Ptit up :) Merci d'avance ..

Reply

Marsh Posté le 02-11-2006 à 17:23:22    

$r1=mysql_query("SELECT mail FROM account ORDER BY mail ASC" ) or die ('Requête invalide : ' . mysql_error()); ... c'est plus mieux :D
if (countmysql_num_rows($r1)>0) {
while ($row=mysql_fetch_array($r1, MYSQL_ASSOC)) {
  ....
}
}
else { ..
}

(il est possible que ta requête renvois 0 réponse, auquel cas, il est normal que tu ais un warning)

Message cité 1 fois
Message édité par chani_t le 02-11-2006 à 17:43:19
Reply

Marsh Posté le 02-11-2006 à 17:23:41    

Et le reste des opérations liées à mysql dans ton script ne retourne pas d'erreurs lui non plus ? (le mysql_connect, mysql_select_db)

Reply

Marsh Posté le 02-11-2006 à 17:27:39    

chani_t a écrit :

$r1=mysql_query("SELECT mail FROM account ORDER BY mail ASC" ) or die ('Requête invalide : ' . mysql_error()); ... c'est plus mieux :D
if (count($r1)>0) {
while ($row=mysql_fetch_array($r1, MYSQL_ASSOC)) {
  ....
}
}
(il est possible que ta requête renvois 0 réponse, auquel cas, il est normal que tu ais un warning)


 
Pour répondre ce genre de conneries, tu peux t'abstenir hein, $r1 n'est pas un tableau, tu risques pas d'avoir une réponse à ton test...
 
PS : si la requête renvoit 0 réponse, le mysql_fetch_* retourne false et sort de la boucle, pas un warning.

Reply

Marsh Posté le 02-11-2006 à 17:41:06    

naceroth a écrit :

Pour répondre ce genre de conneries, tu peux t'abstenir hein, $r1 n'est pas un tableau, tu risques pas d'avoir une réponse à ton test...
 
PS : si la requête renvoit 0 réponse, le mysql_fetch_* retourne false et sort de la boucle, pas un warning.


 
excuse moi Môssieur.... je me suis trompé.... votre sainteté.... :kaola:  
 
bon alors count c'est pour un tableau ... et moi je voulais utiliser mysql_num_rows()... mais bon la mémoire hein..
 
et pis pour le warning en effet je reconnais mon erreur.... mais bon il n'y a que ce qui ne réponde pas qui ne se trompe pas hein ... allez je ne t'en veux pas, t'es de mauvaise humeur... c'est pas ta faute  :o

Reply

Marsh Posté le 02-11-2006 à 18:13:35    

Ca me renvoit ça :
 
Parse error: parse error, unexpected T_LOGICAL_OR in /home/thechien/web/www/test.php on line 3
 
Donc ?

Reply

Marsh Posté le 02-11-2006 à 18:13:35   

Reply

Marsh Posté le 02-11-2006 à 18:30:00    

chani_t a écrit :

excuse moi Môssieur.... je me suis trompé.... votre sainteté.... :kaola:  
 
bon alors count c'est pour un tableau ... et moi je voulais utiliser mysql_num_rows()... mais bon la mémoire hein..
 
et pis pour le warning en effet je reconnais mon erreur.... mais bon il n'y a que ce qui ne réponde pas qui ne se trompe pas hein ... allez je ne t'en veux pas, t'es de mauvaise humeur... c'est pas ta faute  :o


 
Pas une question de sainteté ni même de mauvaise humeur, tu interviens dans le sujet, le minimum serait quand même de ne pas le perdre encore plus en étant sûr de ta réponse, parce que 3 lignes, 2 erreurs, franchement...
 
(et je n'insiste même pas sur le fait que tu ne réponds pas à sa question...)

Reply

Marsh Posté le 02-11-2006 à 18:30:45    

Heu .. toi non plus pour le coup ;)

Reply

Marsh Posté le 02-11-2006 à 18:34:47    

ncdetoulouse a écrit :

Heu .. toi non plus pour le coup ;)


 
Pas de ma faute si tu réponds pas à ma question hein...

Reply

Marsh Posté le 02-11-2006 à 18:35:45    

Non, pas d'erreur sur le reste !
 
Mais ça : $r1=mysql_query("SELECT mail FROM account ORDER BY mail ASC" ) or die ('Requête invalide : ' . mysql_error());
 
 
Ca retourne ça : Parse error: parse error, unexpected T_LOGICAL_OR in /home/thechien/web/www/test.php on line 3

Reply

Marsh Posté le 02-11-2006 à 18:38:57    

On peut avoir l'intégralité du code qui précède ?

Reply

Marsh Posté le 02-11-2006 à 18:40:22    

mysql_connect("ip","user","pass" );
mysql_select_db("db" );
$r1=mysql_query("SELECT mail FROM account ORDER BY mail ASC" ); or die ('Requête invalide : ' . mysql_error());

Reply

Marsh Posté le 02-11-2006 à 18:40:36    

Ôtez moi d'un doute: y'a bien une connexion à mysql avant le mysql_query() :??:
 

Reply

Marsh Posté le 02-11-2006 à 18:40:44    

Walla ;) Mais la Ligne 3 c'est celle que je t'ai donné ^^

Reply

Marsh Posté le 02-11-2006 à 18:41:01    

Bien sur !!!!

Reply

Marsh Posté le 02-11-2006 à 18:44:22    

ncdetoulouse a écrit :

Walla ;) Mais la Ligne 3 c'est celle que je t'ai donné ^^


 
tellement la même qu'il y a un ; en plus dans la ligne 3 du message où tu me donnes le code complet :D
 
; qui est en trop donc.
 

Code :
  1. $connect = mysql_connect("ip","user","pass" ) or die('connection impossible');
  2. $db = mysql_select_db("db" ) or die('erreur de sélection de db');
  3. $r1 = mysql_query("SELECT mail FROM account ORDER BY mail ASC" ) or die('Requête invalide : ' . mysql_error());


Message édité par naceroth le 02-11-2006 à 18:47:46
Reply

Marsh Posté le 02-11-2006 à 18:48:12    

Ca me renvoie maintenant :
 
Parse error: parse error, unexpected T_LOGICAL_OR in /home/thechien/web/www/test.php on line 2

Reply

Marsh Posté le 02-11-2006 à 18:55:47    

ncdetoulouse a écrit :

Ca me renvoie maintenant :
 
Parse error: parse error, unexpected T_LOGICAL_OR in /home/thechien/web/www/test.php on line 2


 
Sur les 3 lignes il semble pas avoir d'erreur puisque par précaution de l'oubli visuel d'un truc à la con j'ai copié/collé et testé et ça marche ;)
 
Donc t'as une erreur quelque part avant si y'a du code avant ou tu sais pas copier/coller :whistle:

Reply

Marsh Posté le 02-11-2006 à 18:56:06    

Rhhhooo, recopie le code tel quel et te contente pas d'ajouter ce qui manque en oubliant de supprimer les points virgule à la fin de tes lignes de code.

Reply

Marsh Posté le 02-11-2006 à 19:21:50    

Ca a marché !
Surement une erreur de copier coller en effet !
Tete de con moi ^^
lol Merci Naceroth et les autres!

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed