kryow
Messages postés4Date d'inscriptionjeudi 13 août 2009StatutMembreDernière intervention 4 septembre 2010
-
4 sept. 2010 à 16:46
omarino_007
Messages postés24Date d'inscriptionmardi 7 mars 2006StatutMembreDernière intervention27 décembre 2010
-
5 sept. 2010 à 00:04
onjour à tous,
Je sollicite votre aide pour un projet sur lequel je travaille depuis un certain temps...sans succès !
Le "Cahier des charges" :
Je souhaiterais créer un formulaire de recherche multi-critères afin de rechercher des motos plus facilement à partir de critères. Les champs du formulaire (sous forme de cases à cocher) correspondraient aux caractéristiques des différents critères.
En résumé, j'aimerai avir quelque chose qui ressemble à ce systeme (le cadre "Affiner votre recherche" ainsi que les résultats bien évidement).
Ma base de données :
Voici un screenshot de ma base de données :
Mon formulaire :
Rechercher une moto
Chercher une moto :
Marque :
Beta
Derbi
Yamaha
Année :
2003
2004
2005
2006
2007
2008
2009
Prix :
-1 000 €
1 000 € à 1 200 €
1 200 € à 1 500 €
1 500 € à 1 700 €
+1 700 €
Note :
1
2
3
4
5
Couleur :
Noir
Rouge
Bleu
Blanc
Vert
Orange
Kilométrage :
0 à 1 000 KM
1 000 à 10 000 KM
10 000 à 15 000 KM
15 000 à 20 000 KM
Distance :
-50 KM
50 KM à 60 KM
60 KM à 75 KM
75 KM à 100 KM
+100 KM
Frais Supplementaires :
0
1
2
3
Le Code PHP :
C'est cette partie du code qui me pose problème...
Je ne vois pas comment faire pour que, par exemple, si beta et 2003 sont cocher, n'afficher que les betas de 2003, si yamaha, bleu, 2004 et -1 000 € sont cocher, n'aficher que les Yamaha bleu de 2004 à moins de 1 000 €.
Je proposerais bien ça mais le problème est que si on coche par exemple derbi, sa affiche toutes les derbi, mais si on coche derbi ET 2003, sa n'affiche que les derbi :
Marque :
Couleur :
Kilométrage :
Année :
Distance :
Note :
Frais supplémentaires :
Prix :
Marque :
Couleur :
Kilométrage :
Année :
Distance :
Note :
Frais supplémentaires :
Prix :
Marque :
Couleur :
Kilométrage :
Année :
Distance :
Note :
Frais supplémentaires :
Prix :
Marque :
Couleur :
Kilométrage :
Année :
Distance :
Note :
Frais supplémentaires :
Prix :
Marque :
Couleur :
Kilométrage :
Année :
Distance :
Note :
Frais supplémentaires :
Prix :
Merci d'avance à ceux qui voudront bien m'aider à rendre mon formulaire utilisable...
omarino_007
Messages postés24Date d'inscriptionmardi 7 mars 2006StatutMembreDernière intervention27 décembre 2010 5 sept. 2010 à 00:04
Bonjour kryow,
-Quand tu fais une checkbox, n'oubli pas de mettre value="valeur_que_tu_veux"
Exemple :
<td></td>
Comme tu peux voir, selection[] est une liste contenant la valeur des champs selectionnés
Quand tu veux avoir par la suite les valeurs récupérées par la liste selection :
foreach($_POST['selection'] as $item){
echo $item;
}
-Maintenant, pour le filtre :
Une astuce simple consiste à concaténer dans la requête SQL les conditions que tu veux :
Exemple :
$aValues = array(
'category' => '',
'style' => '',
'theme' => '',
'owner' => '',
'format' => '',
'price' => '',
'maincolor' => ''
);
//Compteur utilisé pour énumérer le nombre de conditions
$i=0;
//Récupération des variables transmises par la méthode GET
if(empty($_GET['category'])) $aValues['category'] = '';
else{ $aValues['category'] = $_GET['category'];
}
if(empty($_GET['style'])) $aValues['style'] ='';
else{ $aValues['style'] = $_GET['style'];
}
if(empty($_GET['theme'])) $aValues['theme'] = '';
else{ $aValues['theme'] = $_GET['theme'];
}
if(empty($_GET['artist'])) $aValues['owner'] = '';
else{ $aValues['owner'] = $_GET['artist'];
}
if(empty($_GET['format'])) $aValues['format'] = '';
else{ $aValues['format'] = $_GET['format'];
}
if(empty($_GET['price'])) $aValues['price'] = '' ;
else{ $aValues['price'] = $_GET['price'];
}
if(empty($_GET['color'])) $aValues['maincolor'] = '';
else{ $aValues['maincolor'] = $_GET['color'];
}
foreach($aValues as $key => $value) {
if(!empty($value)){
if($key=='price'){
if($value=='1to2'){
$condition[$i]=$key." BETWEEN 1000 AND 2000";
}
else if($value=='2to5'){
$condition[$i]=$key." BETWEEN 2000 AND 5000";
}
else if($value=='5to10'){
$condition[$i]=$key." BETWEEN 5000 AND 10000";
}
else if($value=='morethan10'){
$condition[$i]=$key." >=1000";
}
$i++;
}else{
$condition[$i]=$key."='".$value."'";
$i++;
}
}
}
$q "SELECT * from table where isvalidated '1'";
for($j=0;$j<$i;$j++){
if(isset($condition[$j])) $q .= " AND ".$condition[$j];
}
Peut-être que le code n'est pas très propre mais c'est juste des exemples pour t'en sortir avec des astuces pas trop compliquées.
Bon courage et n'hésites pas si tu as des questions