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

Zend_Form PHP Discussion :

Modifier formulaire selon action de l'utilisateur


Sujet :

Zend_Form PHP

  1. #1
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut Modifier formulaire selon action de l'utilisateur
    Bonjour,

    Je cherche la manière la plus efficace de faire la chose décrite ci-après. Un lien vers un tutoriel serait idéal.

    Soit un formulaire contenant une liste déroulante (Zend_Form_Element_Select) permettant à l'étudiant connecté de choisir son établissement d'origine.
    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
            // Établissement d'origine de l'étudiant
            // Liste de choix
            $etb_id = new Zend_Form_Element_Select('etb_id');
            $etb_id
                ->setLabel('Choisir dans la liste')
                ->setRequired(false);
     
            $etablissement = new Application_Model_DbTable_Etablissement();
            $result = $etablissement->fetchAll();
            $liste_etablissements = array();
            foreach($result as $etb)
            {
                $liste_etablissements[$etb->etb_id] = $etb->etb_nom;
            }
            $etb_id->addMultiOption('', '0');
            $etb_id->setMultiOptions($liste_etablissements);
    Si cette information est déjà connue, l'établissement est déjà sélectionné et les champs adresse, code postal, ville, téléphone de l'établissement sont eux aussi renseignés.

    Si par contre elle n'est pas connue, les autres champs relatifs à l'établissement sont vides.

    1) Besoin classique, j'aimerais que, lorsque l'étudiant choisit un établissement dans la liste, les autres champs se remplissent tout seul.
    J'imagine qu'il faut du Javascript quelque part pour faire ça mais comment ça se passe plus concrètement avec Zend_Framework ? N'y a t-il pas déjà des outils tout prêt pour le faire ?

    2) Autre besoin, je veux offrir la possibilité à l'étudiant d'ajouter un établissement s'il trouve pas le sien dans la liste.
    Vaut-il mieux :
    a) Prévoir un lien ou un bouton qui ouvrira un autre formulaire pour créer un nouvel établissement ?
    b) Ajouter un Zend_Form_Element_Text permettant à l'étudiant de saisir directement le nom de l'établissement, tous les autres champs relatifs aux données à fournir pour un nouvel établissement se trouvant également dans le formulaire principal ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Ça n'inspire pas grand monde on dirait...

    Pour le moment, j'ai opté pour une approche légèrement différente. Selon que l'établissement d'origine de l'étudiant est déjà connu ou non, j'affiche directement les coordonnées non modifiables de celui-ci ou le formulaire de saisie des informations relatives à l'établissement :
    Code phtml : 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
    19
    20
    21
    22
    23
    24
        <h2>Votre établissement d'origine</h2>
        <?php if($this->form->etb_id->getValue() == '') : ?>
            <!-- Établissement de l'étudiant non encore connu => Formulaire de saisie  -->
            <?php echo $this->form->etb_id; 
            echo $this->form->etb_nom;
            echo $this->form->etb_adresse;
            echo $this->form->etb_code_postal;
            echo $this->form->id_commune_etablissement;
            echo $this->form->etb_telephone;
            echo $this->form->te_id;
            ?>
        <?php else :?>
            <!-- Établissement déjà en BDD => Affichage des coordonnées  -->
            <dl>
                <dt>Nom</dt>
                <dd><?php echo $this->escape($this->infos_etudiant['etb_nom']); ?></dd>
                <dt>Adresse</dt>
                <dd>
                    <?php echo $this->escape($this->infos_etudiant['etb_adresse']); ?><br />
                    <?php echo $this->escape($this->infos_etudiant['etb_code_postal']); ?> 
                    <?php echo $this->escape($this->infos_etudiant['nom_commune_etablissement']); ?>
                </dd>
            </dl>
        <?php endif; ?>

    Le problème de l'affichage automatique des coordonnées de l'établissement choisi dans la liste déroulante reste à faire.

    Un tuto quelque part ?
    Un exemple similaire à me montrer ?
    Une explication sur la bonne manière de faire ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Je parle tout seul !

    J'en suis à essayer d'utiliser un Zend_Dojo_Form_Element_ComboBox qui remplacerait le couple Zend_Form_Element_Select + Zend_Form_Element_Text.
    Dans le formulaire :
    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
    19
    20
    21
    22
    23
    24
            // Établissement d'origine de l'étudiant
            // Liste de choix
            //$etb_id = new Zend_Dojo_Form_Element_FilteringSelect('etb_id');
            $etb_id = new Zend_Dojo_Form_Element_ComboBox('etb_id');
            $etb_id
                ->setLabel('Nom')
                ->setAutoComplete(true)
                ->setAttrib('onchange','loadetablissement()');
     
            /*$etb_id = new Zend_Form_Element_Select('etb_id');
            $etb_id
                ->setLabel('Choisir dans la liste')
                ->setRequired(false);*/
     
            $etablissement = new Application_Model_DbTable_Etablissement();
            $result = $etablissement->fetchAll();
            $liste_etablissements = array();
            foreach($result as $etb)
            {
                $liste_etablissements[$etb->etb_id] = $etb->etb_nom;
            }
            $etb_id->addMultiOption('0', '');
            $etb_id->addMultiOptions($liste_etablissements);
            $etb_id->setValue('0');
    Ça s'affiche mais c'est moche !
    Une zone de saisie classique avec au bout un petit rectangle blanc qui est probablement sensé contenir la flèche pour dérouler la liste mais qui ne contient rien.

    Quant à ->setAttrib('onchange','loadetablissement()'); j'ai un peu de mal à comprendre ce que je dois faire en javascript derrière !

    Rappel du besoin : si l'utilisateur choisit un établissement existant, les coordonnées complète de cet établissement doivent apparaître à la place du morceau de formulaire permettant de les saisir (voir messages précédents).

    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Membre éclairé Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Points : 663
    Points
    663
    Par défaut
    Salut,

    Avec ta fonction javascript, tu pourrais charger les infos de l'établissement en json avec un xmlhttpreqest et remplir les champs dans ta page.

    Je n'ai pas vraiment le temps de te filer un exemple mais ce n'est pas si compliqué. Regarde sur la doc de Dojo et Zend_Dojo_Data, tu trouvera ton bonheur
    Les idiots sont ceux qui ne posent jamais de question!

Discussions similaires

  1. [AC-2003] Voir un seul formulaire selon l'utilisateur qui ouvre la base
    Par alu1308 dans le forum Sécurité
    Réponses: 0
    Dernier message: 18/07/2013, 10h17
  2. [AC-2010] Différents formulaires selon action
    Par scrouet dans le forum IHM
    Réponses: 3
    Dernier message: 07/03/2013, 11h55
  3. Modifier la propriété ACTION de mon formulaire
    Par titan_33 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 22/05/2009, 17h06
  4. Modifier un sous formulaire selon un menu déroulant
    Par bellophe dans le forum VBA Access
    Réponses: 0
    Dernier message: 26/01/2008, 14h42
  5. action de formulaire selon le bouton radio?
    Par anis_el_madani dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/05/2007, 10h00

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