Pb de lecture de requète

Fermé
AmeryCourtz Messages postés 94 Date d'inscription lundi 16 février 2009 Statut Membre Derniè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.

A n'y rien comprendre..

Quelqu'un à une idée??