Administrateur PHPfrance |
11457 Messages
01 oct. 2006, 12:07
Pour ma part, je suis partagé.
Je suis très sensible à l'élégance de la solution proposée par
Ryle
(solution que je ne manquerai pas d'adopter à l'avenir...)

mais je défends tout de même la légitimité de l'astuce précédemment évoquée.
//
$req = "SELECT champs FROM table WHERE 1=1";
if ($val_reference1) $req .= " AND champ1 = ".$val_reference1;
if ($val_reference2) $req .= " AND champ2 = ".$val_reference2;
// ...
L'astuce consistant à indiquer une condition toujours vérifiée dans la clause WHERE
pour ensuite y ajouter les éventuelles clauses AND ou OR
est en effet préconisée par M. Oracle himself !
(Jean-Hubert, de son prénom)
C'est une astuce, oui. Mais pas une bidouille.
Certes, elle est moins élégante que celle proposée par
Ryle (je le répête, mais c'est parce que je t'aime bien) 
mais elle implique moins le développement dans un langage externe (ici, PHP)
et peut se construire entièrement en SQL, indépendamment du langage de dev utilisé...