Probleme lors de la lecture de données

benji86446
Messages postés
40
Date d'inscription
vendredi 23 mai 2003
Statut
Membre
Dernière intervention
20 novembre 2008
- 29 janv. 2005 à 17:51
benji86446
Messages postés
40
Date d'inscription
vendredi 23 mai 2003
Statut
Membre
Dernière intervention
20 novembre 2008
- 31 janv. 2005 à 20:52
Salut tout le monde,

Dans le script que je suis en train de programmer, j'effectue une opération simple: la lecture dans une base MySQL. Malgré tout, j'ai un message d'erreur qui apparait lors de l'execution, je ne vois pas vraiment pourquoi.

Voici le passage qui provoque un message d'erreur:

$sql = "SELECT idlive, match, minute, com1, com2, com FROM nuke_live_live order by `idlive` desc";
$result = $db->sql_query($sql);
while (list($idlive, $match, $minute, $com1, $com2, $com)=mysql_fetch_array($result)){
if ($com=="") {
echo(''.$minute.',
'.$com1.',
'.$com2.'
');
}
else {
echo(''.$com.'
');
}
}

il s'agit en fait d'un live texte pour un match de foot, les données correspondent à:
$idlive > Pour identifier le commentaire
$match > Pour identifier le match du commentaire (j'ai une autre table qui gere les caracteristiques du match, c'est a dire, les equipes et le score)
$minute > Indique le temps de jeu pour le comentaire
$com1 > Commentaire pour l'equipe 1
$com2 > Commentaire pour l'equipe 2
$com > Commentaire neutre (pour par exemple anoncer la mi temps, etc).
Je fais donc en sorte, dans l'extrait de script ci dessus que si $com est nul, cela affiche un tableau à 3 colonnes ($minute, $com1 et $com2), sinon creer un tableau à 2 colonnes (une vide, pour garder la forme, et $com centré).
Maintenant vous savez ce que je souhaite faire avec mon script.

Pour finir, voila le message d'erreur qui apparait:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/web43/html/kidlogis.com/modules/Live3/index.php on line 47

Quelqu'un a une idée?
Merci beaucoup d'avance, parce que là, je comprends pas trop...

23 réponses

tucsoufle
Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
1
29 janv. 2005 à 18:08
salut,

je connais pas ta syntaxe ici : $result = $db->sql_query($sql);

essai de la remplacer par ca : $result = mysql_query($sql);



Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
0
benji86446
Messages postés
40
Date d'inscription
vendredi 23 mai 2003
Statut
Membre
Dernière intervention
20 novembre 2008

29 janv. 2005 à 18:14
Merci tucsoufle, mais le résultat est le même. J'ai oublié de préciser deux choses:
1/ J'utilise Php Nuke
2/ Dans la même page, je fais appel à une autre table avec exactement le même script que celui que je vous ai passé (afin d'obtenir les noms des deux equipes et les scores), et cela marche.

Pour voir ce que cela donne, voici le lien direct: http://www.chaudron-vert.com/modules.php?name=Live3

Si vous desirez avoir le code complet (partie admin comprise, faites moi signe), par ailleurs, si vous desirez que je vous donne temporairement les droits d'accès à l'administration du module pour voir le resultat, aucun soucis. La partie d'admin a 3 rubriques. Nouveau match, editer un match, et gerer le live. Ces trois rubriques fonctionnent parfaitement.
0
tucsoufle
Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
1
29 janv. 2005 à 18:34
le probleme dans ce cas doit venir de ta requete, verifie qu'elle est bien formuler

si ce n'est pas ça, je ne vois pas, désolé

Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
0
benji86446
Messages postés
40
Date d'inscription
vendredi 23 mai 2003
Statut
Membre
Dernière intervention
20 novembre 2008

29 janv. 2005 à 18:44
ok merci c'est pas grave
0

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

Posez votre question
malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
2 mars 2010
25
29 janv. 2005 à 20:19
Hello,

bah...file la classe qui contient la fonction membre sql_query

file aussi ma structure de ta table nuke_live_live

enfin, pourquoi idlive est il entre quote ? Ce n'est pas la peine a priori.

cette erreur indique que mysql a un probleme soit avec la query, soit avec la fonction appelant la query (sql_query dans ton cas). Visiblement, si tu as suivi les conseils de tucsouffle, c'est que ca vient de ta query. Ta query est correcte hormis le 'idlive' mais ca ne doit pas causer d'erreur a priori. Donc, c'est que la table a un soucis, ou plutot que ta query n'est pas en accord avec ta table. File donc la structure de ta table, et, sait-on jamais, toute la classe a laquelle appartient sql_query(), on y verra plus clair.
0
benji86446
Messages postés
40
Date d'inscription
vendredi 23 mai 2003
Statut
Membre
Dernière intervention
20 novembre 2008

29 janv. 2005 à 20:56
vous trouverez toutes les sources à http://www.chaudron-vert.com/live.zip (10ko)
Encore merci
0
malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
2 mars 2010
25
29 janv. 2005 à 21:11
Re,

ecoute, tu as l'air sympa, mais je ne vais perso pas me taper 10ko de source a lire pour trouver ton probleme...donne juste la structure de ta base et eventuellement ta classe, et ca devrait suffire.
0
benji86446
Messages postés
40
Date d'inscription
vendredi 23 mai 2003
Statut
Membre
Dernière intervention
20 novembre 2008

29 janv. 2005 à 23:49
D'acord pas de soucis, j'ai mis le lien vers la source complete juste au cas où qqn desirais voir la source complete. Je tiens juste à signaler que la page permettant la lecture pese 2ko (l'admin etant la plus grosse).

Pour ce qui est de la base nuke_live_live, voici sa structure:

Champ Type Null Défault Extra

Idlive tinyint(4) Non auto_increment
match varchar(10) Non
minute char(2) Oui NULL
com1 varchar(255) Oui NULL
com2 varchar(255) Oui NULL
com varchar(255) Oui NULL
0
malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
2 mars 2010
25
31 janv. 2005 à 15:36
Ok...



ben mets Idlive avec un I masjucule dans ta query et ca devrait aller mieux ;-) Petite faute d'inattention a mon avis.



$sql = "SELECT Idlive, match, minute, com1, com2, com FROM nuke_live_live order by Idlive desc";
0
benji86446
Messages postés
40
Date d'inscription
vendredi 23 mai 2003
Statut
Membre
Dernière intervention
20 novembre 2008

31 janv. 2005 à 17:06
aouch désolé, en fait c'est sur le forum que j'ai fait une faute d'inattention. Je viens de verifier, il n'y a pas de majuscule à idlive.
Retour à la case départ
0
malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
2 mars 2010
25
31 janv. 2005 à 17:19
Ah merde lol...

Bon ca va, je regarde de plus pres lol. Mais demain, la je vais partir desole. Peut-etre que qqu'un d'autre aura une reponse d'ici la :-)
0
benji86446
Messages postés
40
Date d'inscription
vendredi 23 mai 2003
Statut
Membre
Dernière intervention
20 novembre 2008

31 janv. 2005 à 17:28
merci c'est sympa :)

Sinon je pourrais effectuer ma lecture par quel autre moyen? (peux m'importe le moyen utilisé, si au final je peux afficher mes données correctement) :)

La seule chose que je trouve bizar, c'est que la requete que je vous ai passé ci dessus est mise sur la meme page juste au dessus mais pour une autre table et cela marche sans probleme. Je vais vous passer le script complet de la page ça vous aidera peut-etre mieux?

<?php
if (!eregi("modules.php", $_SERVER['PHP_SELF'])) {
die ("vous ne pouvez pas acceder a ce fichier directement...");
}


$module_name = basename(dirname(__FILE__));
$pagetitle = " - Live";


$index = 0;



function live(){
echo('<style type="text/css">.Style7 {font-family: "Comic Sans MS"; font-size: 36px; }</style>');
include("header.php");
OpenTable();
$sql = "SELECT idmatch, equipe1, score1, equipe2, score2 FROM nuke_live_match order by `idmatch` desc limit 1";
$result = $db->sql_query($sql);
while (list($idmatch, $equipe1, $score1, $equipe2, $score2)=mysql_fetch_array($result)){
echo ("<td class='Style7'><center>".$equipe1."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$score1." - ".$score2."&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$equipe2."</td></center>");
}
CloseTable();
OpenTable();
$sql = "SELECT idlive, match, minute, com1, com2, com FROM nuke_live_live order by `idlive` desc";
$result = $db->sql_query($sql);
while (list($minute, $com1, $com2, $com)=mysql_fetch_array($result)){
if ($com=="") {
echo(''.$minute.',
'.$com1.',
'.$com2.'
');
}
else {
echo(''.$com.'
');
}
}
CloseTable();
include("footer.php");
}


live();
break;


?>

Vuos allez surement me dire, pourquoi faire appel à une fonction live si elle est seule, ben c'est parce qu'au futur, je souhaiterais mettre en place une fonction archives ;)
pour ceux qui ne connsaissent pas vraiment le principe de phpnuke, le script de la page commence à partir du function live() , et la requete doit etre entre des OpenTable et CloseTable afin de pouvoir l'afficher dans un "cadre". Vous pouvez en avoir un exemple sur http://www.chaudron-vert.com/modules.php?name=Live3 , les equipes et le score du match sont dans un Open/Close Table
0
tucsoufle
Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
1
31 janv. 2005 à 17:53
je ne sais pas si il y a un rapport mais dans ton list
while (list($minute, $com1, $com2, $com)=mysql_fetch_array($result)){

tu n'a pas le meme nombre de variable que le nombre de champs que tu recupere et tu ne les recupere pas dans le bonne ordre!!!

alors est ce que ce n'est pas ça qui pose probleme ???



Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
0
benji86446
Messages postés
40
Date d'inscription
vendredi 23 mai 2003
Statut
Membre
Dernière intervention
20 novembre 2008

31 janv. 2005 à 18:06
hum en effet, je n'avais pas fait attention à ce détail...
Je viens de le corriger, j'ai toujours le même message d'erreur.
J'ai oublié de vous préciser quelque chose (qui est quand même relactivement important), le message d'erreur que j'obtiens me donne un numero de ligne. La ligne correspondant à ce numero est:

while (list($idlive, $match, $minute, $com1, $com2, $com)=mysql_fetch_array($result)){

C'est à dire, la ligne où il manquait deux variables
0
tucsoufle
Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
1
31 janv. 2005 à 18:18
bon ben je ne vois pas vraiment non plus d'ou vient ton probleme !!!??!!!

comme on voit des choses bizarre en info, essai de changer le nom de tes variables pour la seconde requete, on ne sait jamais



sinon, essai de remplacer ta requete et son affichage par ceci :

OpenTable();
$sql = "SELECT idlive, match, minute, com1, com2, com FROM nuke_live_live order by `idlive` desc";
$result = mysql_query($sql);
while ($res=mysql_fetch_object($result)){
if ($res->com=="") {
echo(''.$res->minute.',
'.$res->com1.',
'.$res->com2.'
');
}
else {
echo(''.$res->com.'
');
}
}
CloseTable();




voila, j'espere que ca va etre bon

Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
0
benji86446
Messages postés
40
Date d'inscription
vendredi 23 mai 2003
Statut
Membre
Dernière intervention
20 novembre 2008

31 janv. 2005 à 18:25
non ça ne passe toujours pas :( Merci quand même

Le message que j'obtiens etant

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/web43/html/kidlogis.com/modules/Live3/index.php on line 47

J'en conclus donc que c'est le mysql_fetch_object() qui a du mal à passer... Je vais essayer de changer le nom de la table ainsi que celui des variables...

Sinon n'existe t il pas un autre moyen d'obtenir des données sur une base MySQL?
0
tucsoufle
Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
1
31 janv. 2005 à 18:37
c'est toujours des methodes qui se ressemble beaucoup...

mais je pense que ca vient plutot de ta requete, est ce que tu a tester
de l'utiliser directement sous phpmyadmin pour voir si elle est bonne

d'apres moi ca vient de là, autrement oui essai de modifier les noms des different champ???

Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
0
benji86446
Messages postés
40
Date d'inscription
vendredi 23 mai 2003
Statut
Membre
Dernière intervention
20 novembre 2008

31 janv. 2005 à 18:55
Bon, le plus simple, je vais refaire carement ma table avec de nouveaux noms. Au niveau de la requete, celle que tu m'a passé tucsoufle fonctionne? Histoire que je reparte sur de bonnes bases avec une requete qui fontionne. Enfin, au niveau du contenu de la table, est ce que j'ai choisi les bonnes options? (je prefere demander, car une erreur d'inattention est vite arrivée):

Champ Type Null Défault Extra

idlive tinyint(4) Non auto_increment
match varchar(10) Non
minute char(6) Oui NULL
com1 varchar(255) Oui NULL
com2 varchar(255) Oui NULL
com varchar(255) Oui NULL

idlive doit afficher un nombre qui est unique pour chaque commentaire
match correspond au numero du match (qui est caracterisé par idmatch sur une autre table)
minute doit etre un champ avec 5~6 caracteres (de façon à pouvoir afficher 45+1 lorsqu'il y a du temps aditionnel
com1 doit contenir du texte, il correspond au commentaire de l'equipe 1, je l'ai fait relativement grand (255)
com2 pareil que com1 mais pour l'equipe 2
com pareil sauf que c'est pour les commentaires généraux, comme pour parler du public, ou autres
Il faut que puissent être nuls minute, com1, com2 et com
La valeur de match est fixée par une requete lors de l'ecriture d'un commentaire, qui lit la valeur de l'autre table pour la transferer sur celle ci.

Merci encore pour votre aide
0
tucsoufle
Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
1
31 janv. 2005 à 19:06
pour le match vu que c'est une id,

tu peut mettre un tinyint ou smallint, ca depend du nombre d'enregistrement
et met la meme chose que dans ton autre table

si c'est trop galere a changer, tu peut laisser la meme chose



pour le reste, ca me semble Ok

Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
0
benji86446
Messages postés
40
Date d'inscription
vendredi 23 mai 2003
Statut
Membre
Dernière intervention
20 novembre 2008

31 janv. 2005 à 19:09
d'accord merci beaucoup à tous ceux qui m'ont aidé :)

Je vous tiens au courant
0