Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/02/2011, 08h49   #1
Invité de passage
 
Inscription : février 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 10
Points : 0
Points : 0
Par défaut filtrer les resutats d'une requete via formulaire post

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 :
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 :
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> <? } ?>
michael410 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 09h32   #2
Membre éclairé
 
Homme Jérémy
Étudiant
Inscription : octobre 2009
Messages : 236
Détails du profil
Informations personnelles :
Nom : Homme Jérémy
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : octobre 2009
Messages : 236
Points : 322
Points : 322
Code :
1
2
$resultProduitsTmp .= " ORDER BY Ordre LIMIT " . $Debut . "";
$resultProduits = mysql_query("$resultProduitsTmp, 19",$db);
Cette partie de code est similaire à tout tes switchs si j'ai bien vus du coup met le en dehors, ça t'évitera de le répéter et de gagner des lignes.
gwharl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 12h49   #3
Invité de passage
 
Inscription : février 2011
Messages : 10
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 10
Points : 0
Points : 0
merci pour votre contribution, je vais regrouper ca
michael410 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h49.


 
 
 
 
Partenaires

Hébergement Web