Pb : mysql_fetch_array()

Tounch
Invité n'ayant pas de compte PHPfrance

18 mai 2006, 09:09

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 :wink:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

18 mai 2006, 09:17

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

tounch
Invité n'ayant pas de compte PHPfrance

18 mai 2006, 09:19

Déjà merci pour ta réponse , j'ai du mal à la comprendre :oops: mais je vais essayé de faire ce que tu m'as dis
merci

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

18 mai 2006, 09:22

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 ;)

Invité
Invité n'ayant pas de compte PHPfrance

18 mai 2006, 09:25

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é :oops: ?

Oupps déjà 9h25 je dois allé bosser ,

Je reviens ce soir , merci pour ton aide en tout cas !

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

18 mai 2006, 09:31

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()

tounch
Invité n'ayant pas de compte PHPfrance

18 mai 2006, 16:48

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 ? :?

Mammouth du PHP | 1353 Messages

18 mai 2006, 16:54

Peut etre parce que c mysql_error et non pas myql_error :wink:

Invité
Invité n'ayant pas de compte PHPfrance

18 mai 2006, 16:56

oups oui merci :wink:

tounch
Invité n'ayant pas de compte PHPfrance

18 mai 2006, 16:58

Voilà l'erreur ,

No database selected

Pourtant j'ai bien tout créer mes bdd , je comprend pas trop :?

Avatar du membre
ViPHP
ViPHP | 3008 Messages

18 mai 2006, 17:02

Regardes test paramètres de connexion.

tounch
Invité n'ayant pas de compte PHPfrance

18 mai 2006, 17:04

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 :wink:

Avatar du membre
ViPHP
ViPHP | 3008 Messages

18 mai 2006, 17:07

Montres nous ce morceau de code de connexion.

tounch
Invité n'ayant pas de compte PHPfrance

18 mai 2006, 17:09

mysql_connect("db4.awardspace.com", "tounch_18", "mon pass");
mysql_select_db("news");
voilà c'est ça que tu veux ?

Mammouth du PHP | 1353 Messages

18 mai 2006, 17:13

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