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