PHP - 2 menus déroulants

boss183 Messages postés 187 Statut Membre -  
mcfly10 Messages postés 1098 Statut Membre -
Bonjour,

je viens vers vous, car je souhaite afficher des informations d'une base de données pour cela j'utilise un menu déroulant qui me permet de choisir la marque et d'afficher tous les matériels de cette marque.
Je souhaiterais maintenant ajouter un deuxième critère de recherche (toujours à l'aide d'un menu déroulant) qui serait le type et on afficherait donc le matériel d'un certain type. Je voudrais pouvoir combiner les deux et donc afficher le matériel d'une certaine marque et d'un certain type mais ça ne marche.
Ci-dessous mon code :

Code :

    //***********Choix de la marque**************//
    echo '<form method="post" action="traitementmarque2.php">';
    echo '<p align="center"><select onchange=submit() name="libelle" id="libelle">';
    $resu=mysql_query("SELECT libelle FROM ouapi_ha_marque" );
    echo '<option value="">---Choisir une marque---</option>';
    echo '<option value="Toutes les marques">Toutes les marques</option>';
    while ($liste = mysql_fetch_array($resu))
        {
          echo '<option value="', $liste['libelle'], '">', $liste['libelle'], '</option>';
        }
    echo '</select></p>';
    echo '</form>';
    $libelle = ($_POST['libelle']);
    //***********Choix du type*************//
    echo '<form method="post" action="traitementmarque2.php">';
    echo '<p align="center"><select onchange=submit() name="libelle2" id="libelle2">';
    $resu2=mysql_query("SELECT libelle FROM ouapi_ha_type" );
    echo '<option value="">---Choisir un type---</option>';
    echo '<option value="Tous les types">Tous les types</option>';
    while ($liste2 = mysql_fetch_array($resu2))
        {
          echo '<option value="', $liste2['libelle'], '">', $liste2['libelle'], '</option>';
        }
    echo '</select></p>';
    echo '<form>';
    $libelle2 = ($_POST['libelle2']);




Je ne sais pas si je dois créer 2 formulaires, en tout cas, je pense que le problème vient du fait que j'utilise "onchange=submit()" et donc que le champ marque se réinitialise qd je choisit le type et vice-versa.

Je voudrais donc savoir si je dois bien créer 2 formulaires ou tout mettre dans la même balise <form> et est-ce qu'il est possible de faire ça sans utiliser de bouton Submit.


Merci
A voir également:

9 réponses

mcfly10 Messages postés 1098 Statut Membre 239
 
submit() envoi le formulaire. Ce qui implique également le rechargement de la page et donc la perte des valeurs saisies lors de son deuxième affichage.

Quand tu affiche la deuxième fois le formulaire, avec le deuxième menu déroulant rempli grâce à la sélection du premier menu, il faut que tu re-remplisse tout le menu 1, et sélectionner la valeur sélectionnée.

echo '<option value="', $liste['libelle'], '"',($liste['libelle']==$_POST['libelle']?' checked="checked"':''),'>', $liste['libelle'], '</option>';
0
boss183 Messages postés 187 Statut Membre 17
 
Merci pour ta réponse mcfly, mais je n'ai pas précisé les choix du deuxième menu déroulant (type) ne sont pas fonction du choix qu'on a fait pour le premier menu (marque).

En fait je veux avoir 2 critères de recherche, ce qui me permettrais d'afficher les matériels :

- d'une certaine marque et de tout type
- d'un certain type et de toute marque
- d'une certaine marque et d'un certain type

je sais pas si je suis clair ?
0
mcfly10 Messages postés 1098 Statut Membre 239
 
Si tu veux qu'une personne puisse faire une recherche avec le critère 1, ou le critère 2, ou le critère 1+2, tu ne dois pas faire de submit dans le choix d'un critère, car il devient impossible d'en sélectionner 2 !

Tu dois rajouter un bouton recherche, qui sera le seul a avoir le submit. Ce bouton est d'ailleurs un input type=submit.
0
boss183 Messages postés 187 Statut Membre 17
 
oui j'ai compris mais si je voudrais mettre un bouton recherche mais qu'on reste sur la même page j'ai donc mis le nom de ma page dans action=".. mais ça marche pas.

Aussi je pense que j'ai un autre problème c'est que dans mes deux menus le champ s'appelle libelle (car dans ma BDD les 2 champs s'appellent libelle).

pouvez-vous m'aider
0

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

Posez votre question
mcfly10 Messages postés 1098 Statut Membre 239
 
tu ne dois avoir qu'un seul formulaire, à l'intérieur tu appel submit, la page va envoyer le formulaire à la page définie dans action. Si action est vide, alors il va se l'envoyer à lui-même.

Donc en cliquant sur rechercher, on devrait attérir sur la page traitementmarque2.php.
0
boss183 Messages postés 187 Statut Membre 17
 
non ça ne marche pas ! Mais je n'arrive pas à récupérer la valeur de mon deuxième menu comme dans les 2 cas c'est libelle. Comment je peux faire ?
0
mcfly10 Messages postés 1098 Statut Membre 239
 
<form action="traitementmarque2.php" method=post>
<input type=submit value="rechercher" />
</form>
0
boss183 Messages postés 187 Statut Membre 17
 
Non ça ne marche pas
0
mcfly10 Messages postés 1098 Statut Membre 239
 
Si tu mets comme seul contenu d'un fichier, le contenu de mon message précédent, et que tu clic sur "rechercher", la page qui s'affichera est OBLIGATOIREMENT traitementmarque2.php.

3 cas possibles :
- traitementmarque2.php n'existe pas, t'aura une erreur 404
- traitementmarque2.php existe, alors il s'affiche
- traitementmarque2.php contient une redirection, et alors tu sera redirigé.
0