Bonjour tout le monde,
j'aimerais mettre à jour un formulaire, plus exactement afficher un menu déroulant supplémentaire, en fonction du choix de l'utilisateur dans un premier menu déroulant.
Voici la structure de mon programme :
J'ai une page PHP sur laquelle se trouve le formulaire, elle s'appelle mapage.php.
Les balises encadrantes du formulaire sont "en dur", la méthode est POST, l'action est l'appel d'un autre fichier .php, qui n'a rien à voir avec mon problème, donc on le laisse de côté et on l'appellera onsenfout.php.
à l'intérieur des balises du formulaire, mapage.php appelle systématiquement une fonction : propose_choix_BDD() (ne prend pas d'argument)
C'est cette fonction qui gère les select de la première liste déroulante, qui comme son nom l'indique affiche une liste des bases présentes sur mon serveur. propose_choix_BDD() se trouve dans un fichier contenant toutes mes fonctions : functions.php. Le résultat de la sélection se trouve dans la variable "nom_base_choix" L'id du select est aussi "nom_base_choix".
Ensuite, il y a une fonction propose_choix_table($base) , qui prend en paramètre une base de données, et qui pour cette base affiche certaines tables. Cette fonction est elle aussi définie dans functions.php. Comme sa petite soeur, elle s'occupe des balises select d'une liste déroulante. Cette fonction n'est appelée, donc le second menu déroulant n'est affiché, qu'en cas d'existence de $_POST['nom_base_choix'].
Avant tout marchait bien en utilisant des conditions et des tests (isset, etc...) mais je veux maintenant, vous l'avez deviné, afficher la seconde liste déroulante lorsque l'utilisateur sélectionne quelque chose dans la première.
En gros, le code ressemble à ça :
mapage.php
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <form method="post" action="onsenfout.php" enctype="multipart/form-data"> <label for="base">3 - Choisir BDD </label><br /> <?php include 'functions.php'; propose_choix_BDD(); if (isset($_POST['nom_base_choix'])){ propose_choix_tableau($_POST['nom_base_choix']); } submit_button("Valider"); //affiche le submit button ?> </form>
J'ai donc voulu utiliser JQuery...mais cela fait longtemps que je n'ai plus pratiqué J'ai besoin de votre aide...je ne sais pas si je raisonne correctement.
Ce que j'ai fait pour le moment, c'est récupérer l'évènement correspondant à la sélection par l'utilisateur d'une base de données dans le premier select, voici mon exemple :
J'arrive à récupérer la sélection de l'utilisateur, maintenant j'aimerais juste rafraîchir la page en lui passant en post le nom de la base, de sorte que ma fonction propose_choix_tableau($_POST['nom_base_choix']) puisse être appelée .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 $('#nom_base_choix').change(function () { var val = $(this).val(); // récupération du nom de la base alert(val); //j'envoie une notification pour tester si ça marche : ça marche $.ajax({ type: 'POST', //ma requête est post, je ne spécifie pas de page étant donné que ma cible est la même page data: 'nom_base_choix=' + val, //j'affecte val à nombasechoix datatype: 'html', //c'est bien de l'html que je manipule success: function () { alert("appel ok"); //j'affiche cette alerte pour tester si l'appel est fait : il est fait //?????? // et là, je sèche... } }) });
Merci d'avance !
Partager