requete contenant des if
Posté : 24 févr. 2009, 17:43
bonjour,
je suis en train de realiser des filtres sur un tableau de resultats.
En gros, pas de probleme pour filtrer les resultats en fonction d'un critere, mais ca commence à etre compliqué lorsque qu'il y a plusieurs criteres. je m'explique :
Voila mon code qui couvre les différents cas de filtres, pris un par un :
filtre par date, par type, par pays ou sans filtre :
La requete pourrait ressembler à ca (dans l'exemple, je n'ai appliqué que le cas de l'existance du filtre date) :
$requete = "SELECT * FROM chantiers "if ($filtre_date) { echo "WHERE date_debut LIKE '$filtre_date%'"; }" ORDER BY $tri ASC";
Je pourrais multiplier les if... mais il reste malgré tout le probleme des cas :
- zero filtre, pas de WHERE
- 2 filtres, il faut WHERE et il faut AND entre les 2 conditions donc le WHERE doit etre indépendant d'une condition et le AND doit apparaitre à chaque fois et à partir de 2 conditions
c'est un peu un casse tete...
vous auriez pas une idée ?
merci de votre aide...
je suis en train de realiser des filtres sur un tableau de resultats.
En gros, pas de probleme pour filtrer les resultats en fonction d'un critere, mais ca commence à etre compliqué lorsque qu'il y a plusieurs criteres. je m'explique :
Voila mon code qui couvre les différents cas de filtres, pris un par un :
filtre par date, par type, par pays ou sans filtre :
if ($filtre_date)
{
$requete = "SELECT * FROM chantiers WHERE date_debut LIKE '$filtre_date%' ORDER BY $tri ASC";
}
elseif ($type_chantier)
{
$requete = "SELECT * FROM chantiers WHERE type_chantier='$type_chantier' ORDER BY $tri ASC";
}
elseif ($type_pays)
{
$requete = "SELECT * FROM chantiers WHERE type_pays='$type_pays' ORDER BY $tri ASC";
}
else
{
$requete = "SELECT * FROM chantiers ORDER BY $tri ASC";
}
Je cherche à écrire une requete qui s'adapterai à l'existance d'un ou de x filtres, voire d'aucun.La requete pourrait ressembler à ca (dans l'exemple, je n'ai appliqué que le cas de l'existance du filtre date) :
$requete = "SELECT * FROM chantiers "if ($filtre_date) { echo "WHERE date_debut LIKE '$filtre_date%'"; }" ORDER BY $tri ASC";
Je pourrais multiplier les if... mais il reste malgré tout le probleme des cas :
- zero filtre, pas de WHERE
- 2 filtres, il faut WHERE et il faut AND entre les 2 conditions donc le WHERE doit etre indépendant d'une condition et le AND doit apparaitre à chaque fois et à partir de 2 conditions
c'est un peu un casse tete...
vous auriez pas une idée ?
merci de votre aide...