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 Framework PHP Discussion :

Identification d'une sélection d'un menu déroulant [ZF 1.10]


Sujet :

Zend Framework PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 58
    Points : 27
    Points
    27
    Par défaut Identification d'une sélection d'un menu déroulant
    Bonjour à tous,


    J'ai un petit problème avec une combobox je souhaite récupérer l'id réel du libelle que je selectionne.

    par exemple ma combobox :

    Role :
    ------------
    | Membre |
    | Admin |
    | Visiteur |
    -----------

    j'ai pour mes libellés un Id bien spécifique par exemple :
    Id Libelle
    6 Membre
    15 Admin
    19 Visiteur

    sauf que lorsque j'essai de récuper cet id il ne sagit pas de l'id de mon libelle mais l'id de la combobox : en gros j'aurais quelque chose du genre :

    Id Libelle
    0 Membre
    1 Admin
    2 Visiteur

    Voici le code de mon 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    <?php
     
    class Application_Form_Inscription extends Zend_Form
    {
        public function __construct($options = null)
        {
            parent::__construct($options);
            //liste tous ce qu'on récupère de la table status pour le placer dans la combobox
        	$i = 0;
    		foreach ($options as $st[]){
    			$idStatus[] = $st[$i]['IDSTATUS']; 
    			$libelleStatus[] = $st[$i]['LIBELLESTATUS'];
    			$i = $i +1;			
    		}
            $this->setName('inscription');
            $id = new Zend_Form_Element_Hidden('id');
     
            $login = new Zend_Form_Element_Text("username");
            $login->setLabel('Utilisateur : ')
            		// on rend le champs obligatoire
                    ->setRequired(true)
                    // supprime le HTML non désiré
                    ->addFilter('StripTags')
                    // supprime les espaces 
                    ->addFilter('StringTrim')
                    //on interdit les saisis vides
                    ->addValidator('NotEmpty');
     
            $mdp = new Zend_Form_Element_Password('password');
            $mdp->setLabel('Mot de passe : ')
            	// on rend le champs obligatoire
                ->setRequired(true)
                // supprime le HTML non désiré
                ->addFilter('StripTags')
                // supprime les espaces 
                ->addFilter('StringTrim')
                //on interdit les saisis vides
                ->addValidator('NotEmpty');
            $role = new Zend_Form_Element_Select("role");
            $role->setLabel('Role : ')
            		->setRequired(true)
            		->setValue($idStatus)
    				->setMultiOptions($libelleStatus);
    		//$role = $role->getValue();	
            $envoyer = new Zend_Form_Element_Submit('inscrire');
            $envoyer->setAttrib('id', 'boutoninscrire');
            $this->addElements(array($login, $mdp, $role, $envoyer));
    	}
    }

    Et voici comment je récupère mes valeurs (dans le controlleur) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	        	if ($form->isValid($formData)) {
    	        	//si le formulaire est valide, on instancie la classe inscriptions 
    	        	//avec les valeurs du formulaire
    	            $login = $form->getValue('username');
    	            $mdp = $form->getValue('password');
    	            $idRole = $form->getValue('role');
    	            ...}
    Est ce que vous auriez une idée de comment récupérer ces Id "réels"

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 178
    Points : 230
    Points
    230
    Par défaut
    Hello,

    Il te suffit de faire mettre ces id en clés du tableau multiOptions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    array(
    6 => 'Membre',
    15 => 'Admin',
    19 => 'Visiteur'
    );

  3. #3
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 58
    Points : 27
    Points
    27
    Par défaut
    J'ai déja pensé à cette solution mais c'est trop statique, je récupère mes ID et mes libellés d'une base de données

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 178
    Points : 230
    Points
    230
    Par défaut
    Euh, j'ai écrit un exemple statique mais rien ne t'empêche d'écrire ça dynamiquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    foreach ($options as $st[]){
    			$idStatus[] = $st[$i]['IDSTATUS']; 
    			$libelleStatus[$st[$i]['IDSTATUS']] = $st[$i]['LIBELLESTATUS'];
    			$i = $i +1;			
    		}

  5. #5
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 58
    Points : 27
    Points
    27
    Par défaut
    Effectivement ça marche mieux ^^

    Par contre je ne comprend pas trop
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $libelleStatus[$st[$i]['IDSTATUS']] = $st[$i]['LIBELLESTATUS'];
    en gros tu stocke l'id et le libelle qui correspond mais je t'avous que je n'ai pas du tout pensé à faire de cette manière

    En tout cas merci Patbator

  6. #6
    Membre confirmé
    Avatar de FERDIKAM
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2005
    Messages : 123
    Points : 616
    Points
    616
    Par défaut
    Pour ma part voici comment je procède:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $mesroles = new Model_DbTable_Roles()
    $r = $mesroles->fetchAll();
    if($r->count() > 0)
    {
        foreach($r as $monrole) {
            $role->addMultiOption($monrole->id, $monrole->statut);
        }
    }

  7. #7
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 58
    Points : 27
    Points
    27
    Par défaut
    Pas mal effectivement je pense que ta version est un peu plus propre et plus compréhensible.

    Merci

  8. #8
    Membre confirmé
    Avatar de FERDIKAM
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2005
    Messages : 123
    Points : 616
    Points
    616
    Par défaut
    Ce fut un plaisir

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/11/2014, 11h56
  2. Réponses: 2
    Dernier message: 24/04/2008, 11h28
  3. Apparition d'une zone de texte lors de la sélection d'un menu déroulant
    Par head_hunter dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 13/04/2008, 13h26
  4. Réponses: 5
    Dernier message: 15/08/2006, 16h51
  5. Charger une page depuis un menu déroulant ?
    Par tomguiss dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 14/10/2005, 08h32

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