Mammouth du PHP |
19672 Messages
27 août 2006, 11:43
Tu n'es décidément pas logique et je parie que tu as remplacé le "AND" entre la clause d'absence et les clauses dynamiques : c'est l'autre "AND" dans la fonction implode() qu'il faut remplacer et non la première.
Essaye d'avoir un raisonnement logique et essaye de formuler la question en français avant de traduire ça en SQL, ça devrait ressembler à quelque chose comme ceci:
Code : Tout sélectionner
"Me retourner toutes les lignes
depuis la table cer_membres
Où ( le champ absence a une valeur entre 0 et 2
ET (
Le nom "est proche de" '". $la_variable_nom ."'
OU Le grade est '". $la_variable_grade ."'
OU Le poste est '". $la_variable_poste ."'
)
)"
En d'autre termes, on vérifie que l'absence est dans une fourchette entre 0 et 2 ET qu'au moins une des condition suivantes est vraie, donc on regroupe les trois clauses suivantes séparées par un "OR", mais pour une question de précédence des opérateurs, on devra ajouter des parenthèses. La construction sera donc modifiée comme ceci:
$clauses = (count($t_clauses) > 0) ? " AND (". implode(" OR ", $t_clauses) .")" : null;
Est-ce que tu comprends mieux le fonctionnement de cette façon ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse 