Aller au contenu

Sujets conseillés

Posté

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 1

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/toplist/out.php on line 144

Warning: 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?

Posté

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 ;)

Posté

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 OPTION

if ($TRADE_MODE==1)
{
$id_send=$id_where;
$id_come=$come;
include('../xtrade/xtrade-count.php');
}
#### ------------

mysql_close();

header("location:$url");
?>

Posté

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

  • 4 semaines plus tard...
Posté

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... ;)

Posté

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());

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...