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

Résolu
gintoxic Messages postés 524 Date d'inscription   Statut Membre Dernière intervention   -  
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   894
 
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
Lewis
 
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   Statut Membre Dernière intervention   10
 
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   Statut Membre Dernière intervention   71
 
vérifier la requête sql
0
gintoxic Messages postés 524 Date d'inscription   Statut Membre Dernière intervention   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   Statut Membre Dernière intervention   894
 
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   Statut Membre Dernière intervention   10
 
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   Statut Membre Dernière intervention   894
 
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   Statut Membre Dernière intervention   10
 
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   Statut Membre Dernière intervention   10
 
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   Statut Membre Dernière intervention   10
 
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   Statut Membre Dernière intervention   10
 
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   Statut Membre Dernière intervention   894
 
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   Statut Membre Dernière intervention   10
 
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   Statut Membre Dernière intervention   894
 
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