création d'un filtre

Eléphant du PHP | 139 Messages

19 déc. 2005, 11:45

Bonjour a tous,

Alors j'ai pas vraiment de problème mais j'aimerais avoir votre avis sur la façon dont je compte coder ça !
Donc je veux créer un filtre de ce genre : Image

Ensuite voila comment je compte créer ma requete dynamiquement!
Est ce la bonne solution ?
$condition = " ";
$sql = "SELECT * FROM actionqehs.action ";

//premier test
Si filtrepilote = vrai {
	$condition = $condition . " Nompilote='$pilote'"; }
finsi

//deuxième test donc différent du premier
Si filtreprocessus = vrai {
	Si $condition <> " " {
		$condition = $condition . "AND";
	}
$condition = $condition . " Nomprocessus='$processus'";
}

//suite avec des test (meme principe que précédement)
.
.
.

//Construction de la requete
Si $condition <> " ";
{
	$sql = $sql . "WHERE" . $condition;
}
Bon j'ai pas vraiment écrit en php mais c'est pour vous donner une idée des tests que je compte faire...

Merci d'avance pour votre attention ...

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

19 déc. 2005, 23:12

Salut,

sur le principe tu as l'air bien parti, en construisant ta requête dynamiquement.
Maintenant tu as des astuces pour alléger le code, regarde ici :
Requête SQL dynamique avec paramètres variables et nombreux

En espérant que ça t'aide ;)

Eléphant du PHP | 139 Messages

20 déc. 2005, 10:40

Bonjour,

J'aimerais savoir si mon code est assez complet, optimisé, bref bon.
<?
$ref = $_POST['reference'];
$pilote = $_POST['Pilote'];
$secteur = $_POST['Secteur'];
$processus = $_POST['Processus'];
$dateprevisioncloture = $_POST['dateprevisioncloture'];
$dateevenement = $_POST['dateevenement'];


$condition = " ";
$sql = "SELECT * FROM actionqehs.action ";

if ($_POST['checkreference'] == "vrai")
{
	$condition = $condition . " Refaction='$ref' ";
}

if ($_POST['checkpilote'] == "vrai")
{
	if ($condition <> " ")
	{
		$condition = $condition . " AND ";
	}
$condition = $condition . " Pilote='$pilote' ";
}

if ($_POST['checksecteur'] == "vrai")
{
	if ($condition <> " ")
	{
		$condition = $condition . " AND ";
	}
$condition = $condition . " Secteur='$secteur' ";
}

if ($_POST['checkprocessus'] == "vrai")
{
	if ($condition <> " ")
	{
		$condition = $condition . " AND ";
	}
$condition = $condition . " Processus='$processus' ";
}

if ($condition <> " ")
{
$sql = $sql . " WHERE " . $condition;
}
?>
Mon code fonctionne mais est-il propre ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

20 déc. 2005, 12:35

Salut,

est-ce que tu as regardé le lien que je t'ai donné ?
Moi je trouve ton code un peu lourd, avec tous ses "if" pour tester si c'est la première condition insérée...
 if ($condition <> " ")
    {
        $condition = $condition . " AND ";
    } 
Donc si tu veux mon avis, je te dirai d'utiliser une astuce pour ne pas tester à chaque fois si tu dois rajouter un AND, et donc d'aller voir le lien que je t'ai donné ;)

Eléphant du PHP | 139 Messages

20 déc. 2005, 14:48

Ce que j'aime bien dans le code que tu m'a filé, c'est la WHERE CLAUSE !

"SELECT.............. WHERE 1 = 1" !
C'est pas bete du tout ça !

Merci ! ;)