C'est quoi ça :Warning: mysql_fetch_array() ?

Résolu/Fermé
gintoxic Messages postés 524 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 7 avril 2016 - 26 sept. 2011 à 13:03
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 3 oct. 2011 à 17:02
Bonjour,
j'ai ces erreurs dans ce script préécrit que je ne connais pas et donc que je ne peut régler... sans votre aide précieuse
si toute fois vous le voulez bien...

voici les warning : 
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/k/kr/kri/kri2sis.perso.sfr.fr/public_html/livreor.php on line 64
Page :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/k/kr/kri/kri2sis.perso.sfr.fr/public_html/livreor.php on line 99



et les parties de code concernées : 
// On récupère le nombre total de messages
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor');
$donnees = mysql_fetch_array($retour);
$totalDesMessages = $donnees['nb_messages'];

// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
 
$reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
 
while ($donnees = mysql_fetch_array($reponse))
{
        echo '<p><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />' . $donnees['message'] . '</p>';
}


merci par avance pour votre aide et merci de pardonner mon ignorance (je compte bien apprendre afin de me passer de script préfabriqués et d'en confectionner un à moi.

cordialement

8 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
26 sept. 2011 à 16:16
On va essayer d'expliquer un peu plus:
l'erreur: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

veut dire que la ressource $retour que tu utilises pour la fonction mysql_fetch_array() n'est pas valable

donc l'erreur vient de la ligne précédente celle qui genere cette ressource donc:
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor');

pour voir l'erreur il faut faire "une trace"

$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor') or die ("pb avec la requette .mysql_error());</code>

et la ça devrait te dire ou est l'erreur dans ta requette
1
COUNT renvoies un nombre et non un tableau... donc normal que ça rattaches pas à un tableau(fetch array).
0
gintoxic Messages postés 524 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 7 avril 2016 10
26 sept. 2011 à 21:03
merci alain alors j'ai repris ta requete
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor') or die ("pb avec la requette .mysql_error());
en y ajoutant cependant uns guillemet apres "requette" (vu que la requete de retour doit etre entourée de guilemet << merci le html lol) ceci tant dit, je pense que c'est un oubli de ta part (fréquent en prog d'ailleurs...merci les debuggers) par contre j'ai dès lors ceci qui s'affiche :

pb avec la requetteNo database selected

j'en conclu que c'est ce que tu appelle une "trace" ... me trompe-je ?
comment y remédier ?

pour Lewis : ou array dans mes souvenirs est un tableau... mais ce qui te parait évident pour toi, ne l'ai pas pour les autres forcément, peux-tu m'en dire plus stp ? j'aime apprendre ceci dit et je ne suis pas tres cours thérique a suivre a la lettre mais plus avec l'apprentissage humain et c'est pourquoi je deande sur ce forum qui contient plus d'info qu'in simple site de cours :) (ceci est un compliment pour vous bien sûr
0
holow1 Messages postés 680 Date d'inscription lundi 21 décembre 2009 Statut Membre Dernière intervention 7 décembre 2012 71
26 sept. 2011 à 13:09
vérifier la requête sql
0
gintoxic Messages postés 524 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 7 avril 2016 10
26 sept. 2011 à 14:10
alors je préise que je débute en php/sql, donc si explications il y a, merci de tenter de me parler le plus simplement possible avec le plus de détail svp

merci quand même holow, par contre je ne sais comment verifier la requete sql, laquelle et que faire ensuite ...
merci encore pour votre aide
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
Modifié par Alain_42 le 26/09/2011 à 17:20
ha bon ?? ne serait ce pas fetch_array qui crée un tableau des valeurs sorties par la requette et stockées sous la ressource $retour?

si on veut le nombre directement il faut utiliser mysql_result

$totalDesMessages=mysql_result($retour,0); 
0
gintoxic Messages postés 524 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 7 avril 2016 10
26 sept. 2011 à 21:08
là je nage la brasse dans les plante verte alain lol
que faire de cette requete ?
je veux dire où la placer ? remplace-t-elle une autre requete ?
je remets la page en question https://www.sfr.fr/fermeture-des-pages-perso.html >>> menu : livre d'or (je ne sais si je mets la page concerné .../livreor.php, cela vous aidera a voir quoi que ce soit...)
dites moi si je suis assez explicite hein...
merci avous deja de participer c'est tres aimable (Alain ca fait deux sujets a moi que tu suis et je te remercie vraiment)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
26 sept. 2011 à 21:11
oui effectivement le " c'est une faute de frappe

le message pb avec la requetteNo database selected veut dire que tu n'as pas séléctionné de base avant de lancer la requette

dans ton script php tu dois dans l'ordre faire

mysql_connect(....);
mysql_select_db('ta_base');
puis mysql(query(....

si c'est ainsi que tu as fait, tu peux aussi mettre une trace d'erreur

mysql_connect(....) or die("Pb de connexion au serveur ".mysql_error());
mysql_select_db('ta_base') or die("Pb de selection de base ".mysql_error());;
0
gintoxic Messages postés 524 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 7 avril 2016 10
26 sept. 2011 à 21:17
ah j'aurais juré l'avoir appeler a se connecter.. bon beh je vais faire des traces lol
a priori ca parait etre la meilleur solution en matiere de reconnaissance des errreurs.. merci encore (je t'engage alain lol ;o))
0
gintoxic Messages postés 524 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 7 avril 2016 10
Modifié par gintoxic le 26/09/2011 à 21:23
j'ai disposer tout ce petit monde ainsi avec au début une présentation des valeurs, puis la connection et la BDD
<?  
$host = "tcp/IP; // Serveur SQL de votre hebergeur  
$login = "loggin"; // Votre login pour la connection  
$pass = "pass; // Mot de passe pour la connection  
$base = "kri2s-kri2sis";?>  

<?php  
mysql_connect($host, $login, $pass) or die("Pb de connexion au serveur".mysql_error());  
mysql_select_db($base) or die("Pb de selection de base".mysql_error());
.............?>

qu'en pensez vous ??
0
gintoxic Messages postés 524 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 7 avril 2016 10
26 sept. 2011 à 21:26
bon là je veux bien les traces mais j'ai ça maintenant :
Pb de selection de baseAccess denied for user 'kri2sis'@'pperso-apache01-pr.mid.pr.pperso.vnx.pfs.ld' to database 'kri2s-kri2sis'
0
gintoxic Messages postés 524 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 7 avril 2016 10
26 sept. 2011 à 21:32
oki j'ai saisi la ase de donnée mal écrite, donc la logique fait que... pas de connect a une base de donnée inexistante
puréeeeeeeeeeeeeeee
merci alain en tout cas, je prends note de ces traces et je tacherais de faire bien attention a mes fautes d'inatention
j'ai plus qu'à amméliorer la tronche de cette page en css...
un GRAND MERCI
j'espere que ca pourras aider des noobs comme moi
;o)
sujet clos
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
26 sept. 2011 à 21:35
par contre pour sécurité une fois que tout marche bien il faut supprimer ces "traces"
0
gintoxic Messages postés 524 Date d'inscription mardi 31 juillet 2007 Statut Membre Dernière intervention 7 avril 2016 10
26 sept. 2011 à 23:12
supprimer les traces ?? du code ?

ah j'ai autre chosse qui si je me souviens bien est simple à régler.
les apostrophes s'affichent avec un anti-slash (\')
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
3 oct. 2011 à 17:02
oui une fois que ton code fonctionne tu peux supprimer les
or die (".....") 
pour qu'en exploitation en cas de pb l'internaute n'ai pas l'affichage de tous ces renseignements sur ta BDD

pour supprimer les \ devant les apostrophes utilises la fonction stripslashes()

par exemple:

echo stripslashes($donnees['message']);
0