code1, zone1, et le checkbox ($values)
la table contient une colonne code, zone, defaut (voir la requète)
Version imprimable
code1, zone1, et le checkbox ($values)
la table contient une colonne code, zone, defaut (voir la requète)
Je ne vois pas comment tu pourrais avoir beaucoup plus de 3 if avec 3 champs à vérifier. Déjà ce que je t'ai donné plus haut raccourci pas mal ton script.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 $sql = 'SELECT ... FROM ... WHERE 1 = 1 ' ; if ( critère saisi sur 1er champ ) { $sql .= ' AND champ1 = "(filtre)"' ; } if ( critère saisi sur 2e champ ) { $sql .= ' AND champ2 = "(filtre)"' ; } if ( ! empty($_POST['checkbox']) ) { // Critère sur 3e champ $defauts = implode('\', \'', $_POST['checkbox']) ; $sql .= " AND defaut IN('$defauts')" ; } echo $sql ;
merci pour l'astuce des checkbox :ccool:
pour les if j'aurai bien 9 et pas 3
1 1 1 1 1 0 1 0 1 0 1 1 1 0 0 0 1 0 0 0 1 0 0 0
Pourquoi ? Quelles requêtes veux-tu obtenir au final ?
une requète pour chaque if
exmple 1
code : 12457
Zone : décor
defaut : " "
la requète est
Code:SELECT * FROM afficher,doc WHERE afficher.idqrqc = doc.idqrqc and code='$code1' and zone='$zone1' and titre LIKE '%$mot%' UNION ";
exmple 2
code : " "
Zone : décor
defaut : " manques, empâtés"
la requète est
Code:SELECT * FROM afficher,doc WHERE afficher.idqrqc = doc.idqrqc and zone='$zone1' $sql_types and titre LIKE '%$mot%' UNION ";
exmple 3
code : " "
Zone : " "
defaut : " manques, empâtés"
la requète est
Code:SELECT * FROM afficher,doc WHERE afficher.idqrqc = doc.idqrqc and $sql_types and titre LIKE '%$mot%' UNION ";
etc
si je fais pas sa, il va comparer le vide et il me renvoi rien
Non. Tu as une requête de base à laquelle tu rajoutes des filtres dans le WHERE, comme montré plus haut.Citation:
une requète pour chaque if
Au final 1 seule requête construite dynamiquement selon les saisies.
PS : les jointures sont opérées avec INNER JOIN et pas dans le WHERE ( http://dev.mysql.com/doc/refman/5.0/fr/join.html ).