PHP - 2 menus déroulants

Fermé
boss183 Messages postés 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 - 9 juin 2011 à 12:18
mcfly10 Messages postés 1052 Date d'inscription samedi 18 décembre 2004 Statut Membre Dernière intervention 12 avril 2022 - 10 juin 2011 à 12:56
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 1052 Date d'inscription samedi 18 décembre 2004 Statut Membre Dernière intervention 12 avril 2022 238
9 juin 2011 à 13:01
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 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 17
9 juin 2011 à 13:33
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 1052 Date d'inscription samedi 18 décembre 2004 Statut Membre Dernière intervention 12 avril 2022 238
9 juin 2011 à 17:05
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 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 17
Modifié par boss183 le 9/06/2011 à 17:13
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 1052 Date d'inscription samedi 18 décembre 2004 Statut Membre Dernière intervention 12 avril 2022 238
9 juin 2011 à 17:16
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 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 17
9 juin 2011 à 17:21
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 1052 Date d'inscription samedi 18 décembre 2004 Statut Membre Dernière intervention 12 avril 2022 238
9 juin 2011 à 17:22
<form action="traitementmarque2.php" method=post>
<input type=submit value="rechercher" />
</form>
0
boss183 Messages postés 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 17
9 juin 2011 à 17:33
Non ça ne marche pas
0
mcfly10 Messages postés 1052 Date d'inscription samedi 18 décembre 2004 Statut Membre Dernière intervention 12 avril 2022 238
10 juin 2011 à 12:56
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