Page 1 sur 1

Trie dans une recherche

Posté : 20 nov. 2006, 10:31
par dunbar
Bonjour,

J'ai j'ai un tableau dans lequel j'effectue une recherche suivant un critére ici ref
$sql_recherche = (isset($_POST['recherche'])) ? " WHERE ref = '".$_POST['recherche']."'" : "";
Et ma question est comment rajouter un ou des critéres supplémentaires
?
Exemple 1 la reférence et puis le nom par exemple ?

D'avance merci

Posté : 20 nov. 2006, 10:47
par Cyrano
En créant une clause après l'autre et en stockant chacune dans un tableau pour ensuite construire la clause WHERE dynamiquement. Illustration :
<?php
/* On crée un tableau pour stoquer les clauses possibles */
$clauseWhere = array();
/* On définit un opérateur : "AND" si on veut TOUTES les conditions, "OR" si on en veut au moins une */
$operateur = " AND "; /* ATTENTION, on oublie pas de laisser un espace de chaque coté de l'opérateur */
/* Création de chaque clause */
if(isset($_POST['recherche']))
{
    $clauseWhere[] = "ref = '".$_POST['recherche']."'";
}
if(isset($_POST['nom']))
{
    $clauseWhere[] = "nom = '".$_POST['nom']."'";
}
/* Si on a au mois une clause, on l'ajoute à la requête */
if(count($clauseWhere) > 0)
{
    $sql_recherche = "WHERE ". implode($operateur, $clauseWhere);
}
?>
Tu peux de cette manière le faire sur autant de clauses que tu veux.

Posté : 20 nov. 2006, 10:48
par Truc
Salut,
On trouve de tout sur ce forum... Voir ce topic :)

Posté : 20 nov. 2006, 10:53
par Truc
Réutilisabilité Cyrano réutilisabilité :lol:

Posté : 20 nov. 2006, 11:52
par dunbar
En créant une clause après l'autre et en stockant chacune dans un tableau pour ensuite construire la clause WHERE dynamiquement. Illustration :
<?php
/* On crée un tableau pour stoquer les clauses possibles */
$clauseWhere = array();
/* On définit un opérateur : "AND" si on veut TOUTES les conditions, "OR" si on en veut au moins une */
$operateur = " AND "; /* ATTENTION, on oublie pas de laisser un espace de chaque coté de l'opérateur */
/* Création de chaque clause */
if(isset($_POST['recherche']))
{
    $clauseWhere[] = "ref = '".$_POST['recherche']."'";
}
if(isset($_POST['nom']))
{
    $clauseWhere[] = "nom = '".$_POST['nom']."'";
}
/* Si on a au mois une clause, on l'ajoute à la requête */
if(count($clauseWhere) > 0)
{
    $sql_recherche = "WHERE ". implode($operateur, $clauseWhere);
}
?>
Tu peux de cette manière le faire sur autant de clauses que tu veux.
:wink: Merci beaucoup a+