AmeryCourtz
Messages postés94Date d'inscriptionlundi 16 février 2009StatutMembreDernière intervention 6 juin 2012
-
3 sept. 2009 à 10:24
Bonjour à tous,
Bon là je reste perplexe sur mon code car il marche bien sur mysql, mais dans mon code il me ressort l'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 ' 3' at line 2");
Voici le code en question, il s'agit d'un moteur de recherche qui, par défaut fait une recherche automatique des annonces publier, en fonction de site d'appel :
$TblRech = Array();
$TblRech[0] = "";
$TblRech[1] = ("1, 3");
$TblRech[2] = ("1, 2, 3, 4, 5, 6, 7, 8, 15, 16, 17, 18, 19, 20, 21, 22");
$TblRech[3] = 0;
$TblRech[4] = 0;
$TblRech[5] = "";
$TblRech[6] = "";
$TblRech[7] = "";
//Generation des annonces miniature à la UNE
RecupTablePramAnnMin($TblRech);
//
//Function de récuperation des param d'annonce miniature
//
function RecupTablePramAnnMin($TblRech){
//Ouverture BDD
OuvertureBDD();
//Déclaration des champs
$Date = date('Y/n/d');
$ModuleRch = "AB.TypeAnnonce = 'AnnPro' | 'AnnPar'";
//
//Gestion du module de recherche
//
for($i = 0; $i < count($TblRech); $i++){
//Définition du lieu
switch($i){
case 0:
$Lieu = "arrivage";
break;
case 1:
$Lieu = "AB.Categorie";
break;
case 2:
$Lieu = "AB.SousCategorie";
break;
case 3:
$Lieu = "AM.Mar_Id";
break;
case 4:
$Lieu = "AB.EnergieMoteur";
break;
case 5:
$Lieu = "AB.Prix";
break;
case 6:
$Lieu = "AB.Prix";
break;
case 7:
$Lieu = "AB.CodePostal";
break;
default:
$Lieu = "ElementVide";
}
//Cas de la categorie et de sous categorie du bateau
if($TblRech[$i] != 0 && ($i == 1 || $i == 2)){
$ModuleRch .= " AND ".$Lieu." IN (".$TblRech[$i].")";
}
//Cas marque bateau
elseif($i == 3){
if($TblRech[$i] != 0){
$ModuleRch .= " AND ".$Lieu." = ".$TblRech[$i]."";
}
else{
$ModuleRch .= " AND AM.Mar_Id = AB.MarqueBateau ";
}
}
//Cas l'energie
elseif($i == 4 && $TblRech[$i] != 0){
$ModuleRch .= " AND ".$Lieu." = '".$TblRech[$i]."'";
}
//Cas prix min du bateau
elseif($i == 5 && $TblRech[$i] != ""){
$ModuleRch .= " AND ".$Lieu." > ".$TblRech[$i]."";
}
//Cas prix max du bateau
elseif($i == 6 && $TblRech[$i] != ""){
$ModuleRch .= " AND ".$Lieu." < ".$TblRech[$i]."";
}
//Cas du code postal
elseif($i == 7 && $TblRech[$i] != ""){
$Nb = strlen($TblRech[$i]);
//Si CP a 4 chiffre
if($Nb == 5){
$ModuleRch .= " AND ".$Lieu." = ".$TblRech[$i]."";
}
//Ou si a 2 chiffre
elseif($Nb == 2){
$ModuleRch .= " AND SUBSTR(".$Lieu.",1,2) = ".$TblRech[$i]."";
}
//Cas improbable
else{
}
}
//Cas improbable
else{
}
}
$ModuleRch .= " AND AB.EtatAnnonce = 'Valide'
AND AC.Acc_Id = AB.IdAccrocheAnn
AND ".$Date."< AB.DateFinMiseLigne";
/**/echo('<br/>');
echo $ModuleRch;
//On recupere les params
$Result = mysql_query("SELECT Acc_Url, IdAnnonce, IdUtilisateurAnn, TypeAnnonce, ModeleBateau, Titre, Prix, CodePostal, DateMiseLigne, Mar_Designation
FROM annonces_accroches AC, annonces_bateaux_marque AM, annonces_bateaux AB
WHERE " . $ModuleRch . "
ORDER BY AB.DateMiseLigne DESC") or die(mysql_error());
// On a fini de travailler, on ferme la connexion :
mysql_close();
}
Voila se qu'il m'ecrit avec l'echo $ModuleRch :
AB.TypeAnnonce = 'AnnPro' | 'AnnPar' AND AB.Categorie IN (1, 3) AND AB.SousCategorie IN (1, 2, 3, 4, 5, 6, 7, 8, 15, 16, 17, 18, 19, 20, 21, 22) AND AM.Mar_Id = AB.MarqueBateau AND AB.EtatAnnonce = 'Valide' AND AC.Acc_Id = AB.IdAccrocheAnn AND 2009/9/03< AB.DateFinMiseLigne
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 ' 3' at line 2
Le soucis c'est que je voit pas l'erreur et tout fonctionne bien quand je fait un copier coller de ma requete sur sql.