IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Rafraîchir un formulaire HTML (qui utilise PHP/MySQL)


Sujet :

jQuery

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Rafraîchir un formulaire HTML (qui utilise PHP/MySQL)
    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 :

    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...
            }
        })
     
    });
    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 .

    Merci d'avance !

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 415
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 415
    Points : 15 784
    Points
    15 784
    Par défaut
    regarde la documentation :
    http://api.jquery.com/jQuery.ajax/

    déjà il est conseillé d'utilisé la méthode "done" au lieu de la propriété "success". et ensuite dans "done" tu pourras indiqué 3 paramètres qui contiendront, entre autres, la réponse du serveur

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Ok, merci !

Discussions similaires

  1. Livre d'or sur page html sans utiliser php et Mysql
    Par fartouk dans le forum Balisage (X)HTML et validation W3C
    Réponses: 13
    Dernier message: 31/07/2011, 17h20
  2. [Toutes versions] Exportation access formulaires et BD en PHP + Mysql
    Par makelan dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 23/09/2009, 19h28
  3. [MySQL] Utilisation PHP MySQL dans le cadre de l'amélioration d'un logiciel
    Par lince102 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 01/03/2008, 23h14
  4. formulaire html intégré avec php
    Par maxeur dans le forum Langage
    Réponses: 2
    Dernier message: 29/01/2008, 09h03
  5. Réponses: 1
    Dernier message: 22/06/2007, 15h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo