benji86446
Messages postés40Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention20 novembre 2008
-
2 mars 2005 à 14:26
benji86446
Messages postés40Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention20 novembre 2008
-
4 mars 2005 à 13:07
Bonjour tout le monde!
Voila, j'ai une petite question à propos des requetes SQL. J'aimerais trier les résultats lus sur une table par rapport aux résultats d'une autre table.
Je m'explique:
Je souhaites dans un premier temps lire des données sur une table
$sql = "SELECT id FROM table1";
$result = $db->sql_query($sql);
while (list($id)=mysql_fetch_array($result)){}
Maintenant, j'aimerais afficher toutes les information d'une seconde table ayant leur id égal à $id (ci dessus). Voila ce que j'ai essayé:
$sql = "SELECT id2 FROM table2 WHERE id2=$id";
$result = $db->sql_query($sql);
while (list($id2)=mysql_fetch_array($result)){}
benji86446
Messages postés40Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention20 novembre 2008 2 mars 2005 à 16:28
Oups désolé pour le message d'erreur (moi qui d'habitude suis le premier à raler quand on ne précise pas la message qui s'affiche quand il y en a un ^^). Le voici:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/web43/html/kidlogis.com/modules/Live/index.php on line 50
Pour les requêtes sur plusieurs tables en même temps j'ai le même message d'erreur. Au lieu de vous donner un exemple comme je l'ai fait, je vais vous donner mon vrai code (il s'agit du code d'un live texte pour un match de foot):
$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)){}
$sql = "SELECT idcom, nummatch, numminute, commentaire1, commentaire2, commentaire FROM nuke_live_access WHERE nummatch=$idmatch order by 'idcom' desc";
$result = $db->sql_query($sql);
while (list($idcom, $nummatch, $numminute, $commentaire1, $commentaire2, $commentaire)=mysql_fetch_array($result)){}
Comme vous pouvez le voir, j'essaye pour la premiere table d'afficher la derniere entrée uniquement (chaque entrée identifiée par idmatch) et dans la deuxieme table, j'essaye donc d'afficher tous les commentaires dont le numero du match (nummatch) est égal à l'idmatch de la premiere table.
davwart
Messages postés855Date d'inscriptionmardi 19 novembre 2002StatutMembreDernière intervention28 juillet 20091 2 mars 2005 à 16:57
re !
alors.. une solution tres simple de debuguage !
ajoute " or die(mysql_error())" apres ton sql query.
tu as un probleme avec ta requete, le mysql_error() va te sortir ton erreur ;)
-------------------------------------
Les ordinateurs, plus on s'en sert moins, moins ça a de chance de mal marcher. [Les Shadoks]
benji86446
Messages postés40Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention20 novembre 2008 2 mars 2005 à 17:13
Bon, j'ai modifié mon code par
$sql = "SELECT idcom, nummatch, numminute, commentaire1, commentaire2, commentaire FROM nuke_live_access WHERE nummatch=$idmatch order by 'idcom' desc";
$result = $db->sql_query($sql) or die(mysql_error());
while (list($idcom, $nummatch, $numminute, $commentaire1, $commentaire2, $commentaire)=mysql_fetch_array($result)){}
Et voila le message que j'obtiens:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'order by 'idcom' desc' at line 1
Vous n’avez pas trouvé la réponse que vous recherchez ?
benji86446
Messages postés40Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention20 novembre 2008 2 mars 2005 à 17:16
Autre chose, lorsque je supprime le "WHERE nummatch=$idmatch" de la requete, le script marche, seulement j'ai les commentaires de tous les matchs qui s'affichent à la suite, et non pas seulement ceux du dernier match enregistré
tucsoufle
Messages postés1250Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention30 septembre 20071 2 mars 2005 à 18:09
salut
essai de changer ta requete par celle ici :
$sql = "SELECT idcom, nummatch,
numminute, commentaire1, commentaire2, commentaire FROM
nuke_live_access WHERE nummatch=".$idmatch." order by 'idcom' desc";
c'est peut etre un probleme de concatenation !
autrement, verifie le nom de tout tes champs
Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
benji86446
Messages postés40Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention20 novembre 2008 2 mars 2005 à 18:28
j'ai toujours le même message d'erreur. Pour ce qui est des noms des champs, ils doivent etre bons etant donné que dès que j'enleve WHERE nummatch=idmatch tout marche (même si j'ai tous les commentaires qui s'affichent et non plus ceux que je veux uniquement. Sinon si on fais la requete des deux tables en une fois, vous le coderiez comment? Parce qu'il est possible que je me sois trompé, j'avais mis
$sql = "SELECT t1.idmatch, t2.idcom, t2.nummatch, t2.numminute, t2.commentaire1, t2.commentaire2, commentaire FROM nuke_live_match t1, nuke_live_access t2 WHERE t2.nummatch=t1.idmatch order by 't2.idcom' desc";
$result = $db->sql_query($sql) or die(mysql_error());
while (list($idmatch, $idcom, $nummatch, $numminute, $commentaire1, $commentaire2, $commentaire)=mysql_fetch_array($result)){}
benji86446
Messages postés40Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention20 novembre 2008 2 mars 2005 à 23:21
lorsque je fais un echo de l'idmatch, je tombe sur la valeur "2" et lorsque je fais un echo du nummatch d'un commentaire correspondant au match en question, je tombe également sur la valeur "2"
benji86446
Messages postés40Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention20 novembre 2008 2 mars 2005 à 23:42
Non en fait, je crois que tu as raison, j'ai essayé de creer deux matchs avec un comentaire pour chaque match, avec dans l'echo la valeur de nummatch et de idmatch et voila ce qui s'affiche à mon écran:
Essai match 1 Nummatch= 2 et idmatch= 2
Essai match 2 Nummatch= 3 et idmatch= 3
C'est à dire que les commentaires sont bien identifiés par rapport à leur match(sachant que j'avais créé deja deux matchs, identifiés par 0 et 1, que j'ai ensuite effacé, ce qui crée le décalage actuel du match 1 d'id 2). Donc les identifiants du match sont bien en place, maintenant ce qu'il faut faire c'est arriver à n'afficher que les commentaires du dernier match enregistré.
Dans le futur, je créerai également la possibilité d'acceder aux archives, c'est à dire d'acceder aux commentaires suivant le match séléctionné, mais je pense qu'une fois le live pour le dernier match sera en place, le script sera quasi le même pour les archives
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 3 mars 2005 à 00:38
Salut,
nummatch='$idmatch' devrait
fonctionner dans ta requête comme l'a dit tucsoufle dans son deuxième
commenataire, sauf si le champ idmatch est de type INT ou SMALLINT
(bref numérique, ce qui serait préférable pour les perfs)
benji86446
Messages postés40Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention20 novembre 2008 4 mars 2005 à 13:06
Salut tout le monde!
J'ai résolu mon problème! Ca venait bien d'idmatch qui était mal défini! J'ai fait une erreur de débutant en mettant le } trop tot, ce qui faisait qu'idmatch n'etait plus défini pour la deuxieme requete
En tout cas, merci à tous pour vous être penchés sur mon problème
benji86446
Messages postés40Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention20 novembre 2008 4 mars 2005 à 13:07
Salut tout le monde!
J'ai résolu mon problème! Ca venait bien d'idmatch qui était mal défini! J'ai fait une erreur de débutant en mettant le } trop tot, ce qui faisait qu'idmatch n'etait plus défini pour la deuxieme requete
En tout cas, merci à tous pour vous être penchés sur mon problème