Problème requete sql pour une recherche multicritère

Fermé
cs_machmacha Messages postés 97 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 28 mai 2010 - 23 mai 2007 à 21:05
jaafar123456 Messages postés 2 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 1 juin 2007 - 1 juin 2007 à 21:56
Bonsoir mes amis,
j'ai un problème qui me bloque, je veux faire un requete qui permet de faire une recherche multicritère j'ai 5 critères voilà mon code:
<?php
if(isset($_POST['secteuractv'])!= '')
{
 $secteuractv  = $_POST['secteuractv'];
 $sqlwhere   = $sqlwhere . " Status='o' and Secteur = '".$secteuractv."'";
}
if(isset($_POST['disponibilite'])!='')
{
 $disponibilite  = $_POST['disponibilite'];
 $sqlwhere   = $sqlwhere . " Status='o' and Disponibilite = '".$disponibilite."'";
}
if(isset($_POST['contrat'])!='')
{
$contrat    = $_POST['contrat'];
$sqlwhere    = $sqlwhere . " Status='o' and Contrat = '".$contrat."'";
}
if(isset($_POST['ville'])!='')
{
$ville     = $_POST['ville'];
$sqlwhere    = $sqlwhere . " Status='o' and Ville = '".$ville."'";
}
......
//voila ma requête
$select = "SELECT * FROM matable WHERE 1=1 ".$sqlwhere." ORDER BY NomEtp ASC limit ".$limite.",".$nombre;
....
?>
lorsque j'exécute mon code il m'affiche cette erreur:
Notice : Undefined variable: sqlwhere in c:\dossier\easyphp1-8\www\doss\valider.php on line 147
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 'Status ='o' and Secteur = 'Informatique' Status='o' and

est ce que j'ai une erreur de syntaxe?? merci de m'aider a résoudre mon problème

5 réponses

J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
23 mai 2007 à 21:55
Salut,

Tu poses la question : "est ce que j'ai une erreur de syntaxe??"

Je te répond : "You have an error in your SQL syntax"... Logique ! Non?

Aller, je t'aide : il te manque un "and" sur deux.

A+
0
cs_machmacha Messages postés 97 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 28 mai 2010
24 mai 2007 à 12:11
salut
j'ai rajouter le "and" voilà:
if(isset($_POST['secteuractv'])!= '')
{
 $secteuractv  = $_POST['secteuractv'];
 $sqlwhere   = $sqlwhere . "and Status='o' and Secteur = '".$secteuractv."'";
}
if(isset($_POST['disponibilite'])!='')
{
 $disponibilite  = $_POST['disponibilite'];
 $sqlwhere   = $sqlwhere . "and Status='o' and Disponibilite = '".$disponibilite."'";
}
if(isset($_POST['contrat'])!='')
{
$contrat    = $_POST['contrat'];
$sqlwhere    = $sqlwhere . "and Status='o' and Contrat = '".$contrat."'";
}
if(isset($_POST['ville'])!='')
{
$ville     = $_POST['ville'];
$sqlwhere    = $sqlwhere . "and Status='o' and Ville = '".$ville."'";
}
......
//voila ma requête
$select = "SELECT * FROM matable WHERE 1=1 ".$sqlwhere." ORDER BY NomEtp ASC limit ".$limite.",".$nombre;
mais tjrs la meme erreur
Notice : Undefined variable: sqlwhere in c:\dossier\easyphp1-8\www\doss\valider.php on line 147
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 ''and Status ='o' and Secteur = 'Informatique-Réseaux'and Status=
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
24 mai 2007 à 12:22
Salut,

Reflechi 15 secondes!!! Use un peu ta cervelle... Pose toi la question de la significaation du mot "and", puis regarde ta requete... et le message d'erreur ("near").

Je ne repondrais plus sur ce poste car, clairement, tu ne comprends pas ce que tu fais, voir pire tu n'essayes meme pas de comprendre.

A+
0
cs_machmacha Messages postés 97 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 28 mai 2010
24 mai 2007 à 12:32
aloonnnn du calme Mr.J_G pk tu te nerve, pour moi je vois po ou est l'erreur et c'est pourquoi je demande a quelqu'un qui pourra m'aider a les retrouver et merci de répondre
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jaafar123456 Messages postés 2 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 1 juin 2007
1 juin 2007 à 21:56
salut,

dans :  $sqlwhere   = $sqlwhere . "and Status='o'.... essai un espace avant AND
$sqlwhere   = $sqlwhere . " and Status='o'...

toutfois, je te propose une autre façon de faire une recherche multicritères :

$sql = "SELECT * FROM matable";
$et="";
$w=" Where ";
if(isset($_POST['secteuractv'])'){
   $secteuractv  = $_POST['secteuractv'];
   $sql  . = $w . $et. "Status='o' and Secteur = '".$secteuractv."'"; 
   $et=" AND ";
   $w="";
}
if(isset($_POST['disponibilite'])){
   $disponibilite  = $_POST['disponibilite'];
   $sql  . = $w . $et.  " Status='o' and Disponibilite = '".$disponibilite."'"; 
   $et=" AND ";
   $w="";
}
......
$sql .=" ORDER BY NomEtp ASC limit ".$limite.",".$nombre;

voilà, bon courage
0
Rejoignez-nous