Question sur les VALUE d'une liste formulaire

Résolu/Fermé
jourdanne85 Messages postés 27 Date d'inscription dimanche 14 décembre 2008 Statut Membre Dernière intervention 20 octobre 2009 - 30 janv. 2009 à 14:06
jona303 Messages postés 369 Date d'inscription dimanche 25 janvier 2009 Statut Membre Dernière intervention 28 janvier 2013 - 31 janv. 2009 à 12:17
Bonjour,

Je suis en train de réaliser un site d'un garage automobile et j'ai besoin de faire un formulaire de recherche (MARQUE, MODELE,KILOMETRAGE,PRIX, etc.....).
Je l'ai donc créé grâce à différentes listes déroulantes qui sont complétés par la BDD de voitures du garage.
Pour chaque liste déroulante, j'ai créé une valeur en plus qui est sélectionnée par défaut afin de désigné chaque
liste au visiteur.
Mon problème vient de la valeur que je dois mettre à cette valeur par défaut.
En effet, je veux que si le visiteur ne sélectionne pas de marque de voiture par exemple, il ait dans sa recherche toutes les marques.
Mais je ne sais pas comment faire.
Voici un exemple du code pour mieux comprendre :
Partie du code du formulaire :
<td width="173px">
<select name="marque" id="marque">
<option value="VALEUR POUR SELECTIONNER TOUTES LES MARQUES">MARQUE</option>
<?php
$reponse_marque = mysql_query("SELECT distinct marque FROM auto") or die(mysql_error());
while($marque = mysql_fetch_array($reponse_marque))
{
echo '<option value="'.$marque['marque'].'">'.$marque['marque'].'</option>';
}
?>
</select>

Partie du code de la page de réception de formulaire :
<?php
include("biblio/connexion_bdd.php");
$carros = $_POST['carrosserie'];
$marque = $_POST['marque'];
$prix = $_POST['prix'];
$energie = $_POST['energie'];
$kilometrage = $_POST['kilometrage'];
$liste = mysql_query("SELECT * FROM auto WHERE marque='$marque'");
while($voiture = mysql_fetch_array($liste))
{
echo $voiture['carrosserie'];
echo $voiture['modele'];
echo $voiture['marque'];
echo $voiture['prix'];
echo $voiture['energie'];
echo $voiture['kilometrage'];
}
?>

Je pensais au départ que le symbole * permettait de tout sélectionner mais ce n'est pas le cas.
Alors si quelqu'un a la solution, je le remercie par avance.

5 réponses

jona303 Messages postés 369 Date d'inscription dimanche 25 janvier 2009 Statut Membre Dernière intervention 28 janvier 2013 28
30 janv. 2009 à 14:12
Salut,
* selectionne bien tous les champs de ta base,..

mais :
tu met une valeur par défaut plus simple genre "absent",

et au moment de faire ta requete un petit test:
if($marque=='absent') {
$liste = mysql_query("SELECT * FROM auto ");

}else {
$liste = mysql_query("SELECT * FROM auto WHERE marque='$marque'");

}
0
jourdanne85 Messages postés 27 Date d'inscription dimanche 14 décembre 2008 Statut Membre Dernière intervention 20 octobre 2009
30 janv. 2009 à 14:19
Merci pour ta réponse, mais je pense qu'il y a un problème.
J'ai en tout 5 listes déroulantes : MARQUE, MODELE, PRIX, CARROSSERIE, KILOMETRAGE.
Le client peut très bien ne pas sélectionner de MARQUE ni de CARROSSERIE ni de KILOMETRAGE mais sélectionner
PRIX et MODELE. Les possibilités sont infinies, et je ne pense pas savoir faire ceci.

Par contre, tu me dis que le symbole * sélectionne tous les champs de la base.
J'ai donc essayer de mettre <option value="*">MARQUE</option> mais cela ne fonctionne pas.
La page de réception du formulaire reste toujours vide.

Peut-être que j'utilise mal le symbole * ???
0
jourdanne85 Messages postés 27 Date d'inscription dimanche 14 décembre 2008 Statut Membre Dernière intervention 20 octobre 2009
30 janv. 2009 à 14:46
Je veux juste savoir comment utliser ce symbole *.
0
jona303 Messages postés 369 Date d'inscription dimanche 25 janvier 2009 Statut Membre Dernière intervention 28 janvier 2013 28
30 janv. 2009 à 15:03
le * veut dire que tu prend tous les champs de ta table, si tu fais un SELECT `marque` ta requete ne renverra que ce qu'il y a dans le champ marque.
apres je creerai un string pour les where,.. style

$where='WHERE'

if ($_POST['marque']!='absent') {
$where.='`marque`="'.$_POST['marque'].'"';

}

if ($_POST['modele']!='absent') {
if ($where!=WHERE) {
$where.= ' AND ';
}
$where.='`modele`="'.$_POST['modele'].'"';
}
etc..

puis dans ta requete
mysql_query('SELECT * FROM `latable`'.$where);

tu peux aussi faire un foreach($_POST.....
mais ça rendra le truc plus complexe à coder
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jourdanne85 Messages postés 27 Date d'inscription dimanche 14 décembre 2008 Statut Membre Dernière intervention 20 octobre 2009
31 janv. 2009 à 11:53
Merci beaucoup Jona303.Tes conseils m'ont permis de trouver la solution.
Merci encore.
0
jona303 Messages postés 369 Date d'inscription dimanche 25 janvier 2009 Statut Membre Dernière intervention 28 janvier 2013 28
31 janv. 2009 à 12:17
ben de rien :)
0