gameur Posté 16 Août 2006 Posté 16 Août 2006 Bonjour à tous, Je suis en train de crée une toplist et j'ai un probleme lorsque le visiteur doit etre rediriger, au lieu de tomber sur un site de la toplist on tombe sur ce message d'erreur: 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 id desc' at line 1Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/toplist/out.php on line 144Warning: Cannot modify header information - headers already sent by (output started at /home/toplist/out.php:143) in /home/toplist/out.php on line 181 Je pense que le probleme vien surtout de la premiere phrase qui explique que j'ai un probleme de syntaxe sur la ligne 1 de ma base mysql mais bon que je m'y connais pas trop en mysql et de plus j'ai peut etre mal compris la phrase... Je sais que sa doit etre dur de voir le probleme juste en voyant ce message d'erreur mais bon on c'est jamais c'est peut etre balo , donc je pose quand meme la question, mais le plus bizare c'est que l'erreur ce produit qu'une fois , après sa marche niquel, par exemple si je reboot mon pc, l'erreur va se reproduire une fois et après tous roule normalement... Avez vous des idées?
v4np13 Posté 16 Août 2006 Posté 16 Août 2006 Peut-on voir les lignes qui posent problème? C'est-à-dire dans le fichier out.php, les lignes allant de la 140 à 185 ? order by id desc, pour que cela fonctionne, si le reste de la requete est correcte, il faut que dans ta table, le champs id existe. En passant, bienvenue sur le Hub
gameur Posté 16 Août 2006 Auteur Posté 16 Août 2006 voici les ligne 142 a 185 du fichier out.php: Mais l'erreur viendrai de la base mysql ou du cript de la page? $rv=@mysql_query("select time_last from ".$EXT_TABLE."topliste_ip where ip='$ip' and entree=$come order by id desc"); echo mysql_error(); list($time_last)=mysql_fetch_array($rv); $time=time(); $mini=$time-$TIME_IP*60*60; if ($time_last<$mini) { mysql_query("insert into ".$EXT_TABLE."topliste_ip values('','$ip','$time','$id_where','$come')"); } else { mysql_query("insert into ".$EXT_TABLE."topliste_ip values('','$ip','$time','$id_where','0')"); } #mysql_query("insert into ".$EXT_TABLE."topliste_ip values('','$ip','$time','$id_where','$come')"); ### Mode NO RESET #### } }$rr=mysql_query("select url from ".$EXT_TABLE."topliste where id='$id_where'");list($url)=mysql_fetch_array($rr);if ($url=="") {$url=$ADRESSE_TOP;}#### XTRADE OPTIONif ($TRADE_MODE==1){ $id_send=$id_where; $id_come=$come; include('../xtrade/xtrade-count.php');}#### ------------mysql_close();header("location:$url");?>
Dan Posté 16 Août 2006 Posté 16 Août 2006 Remplace : and entree=$come par : and entree='$come' Et aussi, tu devrais ajouter les champs ip et entree dans ton select , ensuite voir s'il s'agit d'un order by id ou order by ip (vérifie si le champ id existe bien dans ta table). Dan
mediaforest Posté 7 Septembre 2006 Posté 7 Septembre 2006 L'erreur est dans la requête envoyée au serveur : You have an error in your SQL syntax; mais si la requête est invalide, c'est sans doute que ton script ne fait pas ce qu'il devrait faire Pour savoir exactement quelle requête est réellement envoyée, je te propose de modifier ton code comme ça : $requete = "select time_last from $EXT_TABLE"."topliste_ip where ip='$ip' and entree='$come' order by id desc";$rv = mysql_query($requete) or die("$requete : ".mysql_error()); ainsi tu pourras vérifier si tes variables $EXT_TABLE, $ip et $come contiennent bien ce que tu attends. Et comme le disait Dan, les simples quotes : ' sont indispensables délimiter un contenu textuel, et ne gênent pas pour les autres contenus...
Chark Posté 12 Septembre 2006 Posté 12 Septembre 2006 Essaye un truc du genre : $query_rv=sprintf("select time_last from %s topliste_ip where ip= %s and entree=%s order by id desc", $EXT_TABLE, $ip, $come);$rv = mysql_query($query_rv) or die("$query_rv : ".mysql_error());
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant