Page 1 sur 2
Pb : mysql_fetch_array()
Posté : 18 mai 2006, 09:09
par Tounch
Bonjour tout le monde , je vais vous expliquez mon problème . Je viens d'ouvrir un site et mon hébergeur actuel est Free , j'ai installé grace aux tutos du site du zero , un système de news et de compteur sur ma page , et tout va bien !
Ici je suis entrain de testé un nouvel hébergeur mais mes news et mon compteur ne s'affiche pas ! . Pourtant c'est exactement pareil que chez Free
Voici le message d'erreur :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/www/tounch.awardspace.com/index.php on line 217
Code sur ma pge :
while ($donnees = mysql_fetch_array($retour))
Et voici les caractéristiques du serveur :
PHP version 4.4.1
Perl version 5.8.4
MySQL version 4.0.24
.
Je ne suis pas très bon en php , merci de m'aider
A+ tounch

Posté : 18 mai 2006, 09:17
par ouckileou
Le jeu de résultat que tu passes en paramètre n'est pas bon, donc c'est sûrement que ta requête a échoué
Quand une requête ne renvoie pas (ou ne fait pas) ce que l'on attend :
- faire afficher les erreurs MySQL (ou autre)
ex :
mysql_query($requete) or die (mysql_error());
- afficher le SQL
généré (c'est ce code qui est important) :
echo $requête;
- regarder si rien ne cloche
- tester
directement dans MySQL (ex : via phpMyAdmin) et ajuster
Posté : 18 mai 2006, 09:19
par tounch
Déjà merci pour ta réponse , j'ai du mal à la comprendre

mais je vais essayé de faire ce que tu m'as dis
merci
Posté : 18 mai 2006, 09:22
par ouckileou
Ok
Tu passes un jeu de résultat à la fonction mysql_fetch_array
L'erreur que tu as signifie "ce jeu de résultat passé en paramètre est invalide"
Donc il y a de forte chance que la requête SQL que tu exécutes auparavant ait échoué
Tu as une fonction pour afficher les erreurs MySQL : mysql_error()
Donc en faisant ceci :
mysql_query($requete) or die (mysql_error());
il affichera l'erreur MySQL s'il n'arrive pas à exécuter ta requête

Posté : 18 mai 2006, 09:25
par Invité
mysql_query($requete) or die (mysql_error());
j'ajoute donc ce bout de code après ce ci donc :
while ($donnees = mysql_fetch_array($retour))
Je dois changé qqch dans le bout de code que tu m'as donné

?
Oupps déjà 9h25 je dois allé bosser ,
Je reviens ce soir , merci pour ton aide en tout cas !
Posté : 18 mai 2006, 09:31
par ouckileou
Non, tu modifies ton code
Tu dois bien avoir qqchose comme ça :
$retour = mysql_query($requete);
et bien tu rajoutes la fonction d'affichage d'erreur :
$retour = mysql_query($requete) or die(myql_error());
Ce qui veut dire : exécution de la requête et en cas d'échec, arrêt du script et appel de la fonction mysql_error()
Posté : 18 mai 2006, 16:48
par tounch
merci j'ai fait ce que tu m'as dis et voilà le message :
Fatal error: Call to undefined function: myql_error() in /home/www/tounch.awardspace.com/index.php on line 216
et voici le bout de code en ligne 216 :
$retour = mysql_query('SELECT id, titre, contenu, timestamp, news.pseudo, image FROM news, avatar WHERE news.pseudo = avatar.pseudo ORDER BY id DESC LIMIT 0, 4')or die(myql_error());
Je ne sais pas pourquoi ca ne marche pas ?

Posté : 18 mai 2006, 16:54
par guilt92
Peut etre parce que c my
sql_error et non pas myql_error

Posté : 18 mai 2006, 16:56
par Invité
oups oui merci

Posté : 18 mai 2006, 16:58
par tounch
Voilà l'erreur ,
No database selected
Pourtant j'ai bien tout créer mes bdd , je comprend pas trop

Posté : 18 mai 2006, 17:02
par charabia
Regardes test paramètres de connexion.
Posté : 18 mai 2006, 17:04
par tounch
Ca devrait être bon , je croisqu'il arrive a se connecté mais après ...

en tout cas merci pour vos réponses presque immédiates , super forum

Posté : 18 mai 2006, 17:07
par charabia
Montres nous ce morceau de code de connexion.
Posté : 18 mai 2006, 17:09
par tounch
mysql_connect("db4.awardspace.com", "tounch_18", "mon pass");
mysql_select_db("news");
voilà c'est ça que tu veux ?
Posté : 18 mai 2006, 17:13
par guilt92
Met la syntaxe
or die("message") pour savoir si le probleme vient de la, par exemple :
mysql_connect("db4.awardspace.com", "tounch_18", "mon pass") or die("Impossible de se connecter");
mysql_select_db("news") or die("Impossible d'accéder à news");
Cela te permettra de localiser précisemment la ligne qui ne va pas si tu fais plusieurs requetes