benji86446
Messages postés40Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention20 novembre 2008
-
29 janv. 2005 à 17:51
benji86446
Messages postés40Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention20 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...
benji86446
Messages postés40Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention20 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.
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.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 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.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 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.
benji86446
Messages postés40Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention20 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
benji86446
Messages postés40Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention20 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
benji86446
Messages postés40Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention20 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...");
}
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." ".$score1." - ".$score2." ".$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
benji86446
Messages postés40Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention20 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
benji86446
Messages postés40Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention20 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?
benji86446
Messages postés40Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention20 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.