bonjour
je suis débutant en PHP et je viens de finir un morceau de code permettant de filtrer les resultats d'une requete en fonction d'un formulaire post,
tout semble enfin fonctionner correctement mais pourriez vous me confirmer si le tout est correct?

partie PHP:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?
//pour eviter page expiree sous ie et message renvoyer info sous ff
session_cache_limiter('private, must-revalidate');
 
//detruit filtre si on change de categorie
unset($_SESSION['filtre']);
 
//debut session
session_start();
 
// variable pour trouvez la page du catalogue
if($_GET["debut"] == ""){
	$Debut = 0;
}else{
	$Debut = intval($_GET["debut"]);
}
 
// si on post un filtre on reinit le debut a la page1
if($_POST["taille"] != ""){
	$Debut = 0;
}else{
	$Debut = intval($_GET["debut"]);
}
 
//si post effectué la requete est modfie en fonction
//puis sauvegarde dans fichier de session 
//pour conserver le filtre en page 2 du catalogue
 
if (isset($_POST["taille"])){
$secuTaille=intval($_POST["taille"]);
$_SESSION['filtre']=$secuTaille;
}
else
{
if (isset($_SESSION['filtre']))
$secuTaille=$_SESSION['filtre']; 
}
 
//debut requete a modifier par filtre
$requete = "SELECT DISTINCT ...";
 
//test sur champ du catalogue pour verifier si on applique le filtre
if($rowRub["FitreActif"] == "1"){
 
//decoupe des requete et modif des requete en fonction du post
switch ($secuTaille){
 
		case 0 :
//0 correspond a indifferent donc requete classqiue					
$resultProduitsTmp = "$requete";
$resultProduitsTmp .= " ORDER BY Ordre LIMIT " . $Debut . "";
$resultProduits = mysql_query("$resultProduitsTmp, 19",$db); 
break;
 
		case 50 :
 
$resultProduitsTmp = "$requete";
 
//ajout de la condition du filtre
$resultProduitsTmp .= " AND ((table2.nom >= 49 AND table2.nom <=51) OR (table.nom >= 49 AND table.nom <=51))";
 
$resultProduitsTmp .= " ORDER BY Ordre LIMIT " . $Debut . "";
$resultProduits = mysql_query("$resultProduitsTmp, 19",$db); 
break;
 
		case 52 :	...
					break;														
}
 
}else{	
 
//si param filtre absent requete classique
$resultatPro = mysql_query("...");
		}
 
?>
Partie formulaire dans la page:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
//test sur champ du catalogue pour verifier si on applique le filtre
 <?  if($rowRubrique["FitreActif"] == "1"){ ?>
<form method="post" style="display:inline; height:0px;">
<table width="201" border="0" cellspacing="0" cellpadding="0"><tr>
<td width="104">Filter par Taille:</td><td width="97"> 
<select name="taille" class="Taille9" id="taille" style="width:75px;" onchange="submit(); return false;">                     
//force selection si POST ou SESSION actif
<option value="0" <? if(($_POST["taille"] == "0") OR ($_SESSION["filtre"] == "0")){ ?>  selected="selected" <? } ?>>Indifferent</option>                    
<option value="50" <? if(($_POST["taille"] == "50") OR ($_SESSION["filtre"] == "50")){ ?>  selected="selected" <? } ?>>49 à 51</option>        
<option value="52" <? if(($_POST["taille"] == "52") OR ($_SESSION["filtre"] == "52")){ ?>  selected="selected" <? } ?>>51 à 53</option>    
...	                 
</select>
</td></tr></table></form> <? } ?>