Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 13-11-2012 12:40:56

m_abrar
Membre
Date d'inscription: 01-03-2010
Messages: 12

Récupération de la valeur sélectionnée d’une liste modifiable

Bonjour ;
Comment  récupère la valeur sélectionnée de la liste déroulante et la transmettre au modèle
via un lien ?
Merci

Extrait du code:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Formulaire : Consencai.php
<?php
class Admin_Form_Conscours extends Zend_Form {
  public function init() {
        $this->setMethod('post')
             ->setName('consultationcours')
             ->setAttrib('name', 'conscours');
        $groupe= new Admin_Model_DbTable_Groupe();

        $array = array();
        $array = $groupe->fetchall();
        $liste = array();
        foreach($array as $val)
        {
            $liste[] = $val['libel_groupe'];
        }

        $listegroupe  = new Zend_Form_Element_Select('libelgroupe');
        $listegroupe->setLabel('Groupe : ')
                  ->setMultiOptions($liste)
                  ->getDecorator('label')->setOption('tag', NULL);
        $this->addElement($listegroupe);
       
        $this->setDecorators(array(array('ViewScript',
                             array('viewScript' => 'consencaiscript.phtml'))));
    }
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ConsencaiController.php
....................   
    public function consulterAction() {
   
        Zend_Loader::loadClass('Zend_Filter_StripTags');
        $filter = new Zend_Filter_StripTags();
        $libelgroupe = trim($filter->filter($this->getRequest()->getParam('libelgroupe')));

        $ConsmoisTab                      = new Admin_Model_DbTable_Consencai();
        $this->view->rows          = $ConsmoisTab->getConsencais($libelgroupe);
        }
...............
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
modele: Consencai.php
<?php
class Admin_Model_DbTable_Consencai extends Zend_Db_Table_Abstract {
    protected $_name    = 'tconsencai';
    protected $_primary = 'id_consencai';
   
    public function getConsencais($libelgroupe = NULL) {
        try {
            return $this->fetchAll($this->select()
                                        ->where('libel_groupe_consencai = ?', $libelgroupe));           
        }
        catch (Exception $e) {
            echo "getConsencais<br />";
            echo $e->getMessage();
            exit;
        }
    }
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Hors ligne

 

#2 13-11-2012 23:57:38

amiss
Membre
Lieu: Cesson-Sévigné
Date d'inscription: 08-05-2011
Messages: 115

Re: Récupération de la valeur sélectionnée d’une liste modifiable

salut,
au niveau de la vue du formulaire est-ce que la liste a bien les données?

Hors ligne

 

#3 14-11-2012 10:33:35

m_abrar
Membre
Date d'inscription: 01-03-2010
Messages: 12

Re: Récupération de la valeur sélectionnée d’une liste modifiable

Premièrement merci beaucoup amiss.

Oui  au niveau de la vue du formulaire la liste déroulante contient bien les données.
Vous trouver ci dessous le fichier consencaiscript.phtml


<form action="<?php echo $this->escape($this->element->getAction()); ?>"
      method="<?php echo $this->escape($this->element->getMethod()); ?>"
      name="<?php echo $this->escape($this->element->getAttrib('name')); ?>"
      class="formconscours">
<table>
  <tr>
    <td align="center" COLSPAN=2><b>Veuillez choisir le parametre adequoat</td>
    <td align="center"><b>Cliquez sur le lien correspondant a votre choix    </td>
  </tr>
  <tr>
    <td align="center" COLSPAN=2></td>
      <td align="right"></td>
  </tr>
  <tr>
      <td align="right"><?php echo $this->element->libelgroupe->renderLabel(); ?></td>
      <td><?php echo $this->element->libelgroupe->renderViewHelper(); ?></td>
      <td><div align="center">
        <a href="<?php echo $this->url(array('module'=>'admin',
                                             'controller'=>'consencai',
                                             'action'=>'consulter'),
                                             'default', true) ?>">
                    Consultation par groupe
        </a></div></td>
  </tr>
</table>
</form>

Hors ligne

 

#4 14-11-2012 13:40:26

amiss
Membre
Lieu: Cesson-Sévigné
Date d'inscription: 08-05-2011
Messages: 115

Re: Récupération de la valeur sélectionnée d’une liste modifiable

personnellement, je ne vois pas comment peut-on transmettre les données d'un formulaire sans passer par un bouton de soumission(submit) ou une requête ajax.Dans ton cas à la place du lien href un bouton submit à lui seul  aurait suffit d'envoyer les données du formulaire.
Il te faut associer la vue du formulaire à une action serveur:

Code:

[lang=php]

class Admin_Form_Conscours extends Zend_Form {
  public function init() {
        $this->setMethod('post')
             ->setName('consultationcours')
             ->setAttrib('name', 'conscours')
            ->setAction('/consencai/consulter');  //l'action du formulaire
        $groupe= new Admin_Model_DbTable_Groupe();

        $array = array();
        $array = $groupe->fetchall();
        $liste = array();
        foreach($array as $val)
        {
            $liste[] = $val['libel_groupe'];
        }

        $listegroupe  = new Zend_Form_Element_Select('libelgroupe');
        $listegroupe->setLabel('Groupe : ')
                  ->setMultiOptions($liste)
                  ->getDecorator('label')->setOption('tag', NULL);
        $this->addElement($listegroupe);
       
        $this->setDecorators(array(array('ViewScript',
                             array('viewScript' => 'consencaiscript.phtml'))));
    }
}

dans la vue de ton form tu peux mettre en dure le bouton submit

Code:

[lang=php]
<form action="<?php echo $this->escape($this->element->getAction()); ?>"
      method="<?php echo $this->escape($this->element->getMethod()); ?>"
      name="<?php echo $this->escape($this->element->getAttrib('name')); ?>"
      class="formconscours">
<table>
  <tr>
    <td align="center" COLSPAN=2><b>Veuillez choisir le parametre adequoat</td>
    <td align="center"><b>Cliquez sur le lien correspondant a votre choix    </td>
  </tr>
  <tr>
    <td align="center" COLSPAN=2></td>
      <td align="right"></td>
  </tr>
  <tr>
      <td align="right"><?php echo $this->element->libelgroupe->renderLabel(); ?></td>
      <td><?php echo $this->element->libelgroupe->renderViewHelper(); ?></td>
      <td><div align="center">
      <input type="submit" name="go" value="go">      
</div></td>
  </tr>
</table>
</form>

Dernière modification par amiss (14-11-2012 13:43:03)

Hors ligne

 

#5 14-11-2012 13:53:44

amiss
Membre
Lieu: Cesson-Sévigné
Date d'inscription: 08-05-2011
Messages: 115

Re: Récupération de la valeur sélectionnée d’une liste modifiable

dans le select du form il serait plus pertinent de transmettre la clé primaire associée à libel-groupet et non le libellé du groupe(qui est une chaîne de caractère)  même si cela ne résout pas ton problème

Hors ligne

 

#6 26-11-2012 17:05:53

m_abrar
Membre
Date d'inscription: 01-03-2010
Messages: 12

Re: Récupération de la valeur sélectionnée d’une liste modifiable

Pauvez vous m'aider SVP ?
Losque j'essai d'executer une requete parametrée je reçoi le message suivant :
getConsencais
SQLSTATE[HY093]: Invalid parameter number: no parameters were bound

NB: Le parametre est la valeur selectionnée dans la liste déroulante au niveau du formulaire

Modéle

<?php
class Admin_Model_DbTable_Consencai extends Zend_Db_Table_Abstract {
    protected $_name    = 'tconsencai';
    protected $_primary = 'id_consencai';
   
    public function getConsencais($libelgroupe = NULL) {
        try {
            return $this->fetchAll($this->select()
                                        ->where('libel_groupe_consencai = ?', $libelgroupe));
        }
        catch (Exception $e) {
            echo "getConsencais<br />";
            echo $e->getMessage();
            exit;
        }
    }
}


Vue de formulaire

<form action="<?php echo $this->escape($this->element->getAction()); ?>"
      method="<?php echo $this->escape($this->element->getMethod()); ?>"
      name="<?php echo $this->escape($this->element->getAttrib('name')); ?>"
      class="formconscours">

    <TABLE WIDTH=50%>
        <tr>
            <td align="center"><b>Veuillez choisir le groupe adequoat :</b></td>
            <td><?php echo $this->element->libelgroupe->renderViewHelper(); ?></td>
            <td align="center"><?php echo $this->element->valider->renderViewHelper(); ?></td>
            <td align="center">&nbsp;&nbsp;<?php echo $this->element->annuler->renderViewHelper(); ?></td>
        </tr>
    </table>
</form>


Controller

<?php
class Admin_ConsencaiController extends Zend_Controller_Action {
    protected $urlRetour  = '/admin/index/';
    protected $nbreLignes   = 15;
   
        public function init()     {
        $action = $this->_request->getActionName();

        if ($action == 'index') {
            $this->view->headLink()
                       ->appendStylesheet($this->view->baseUrl().'/styles/pagination.css');
        }
    }
        public function indexAction()      {
       
        $session        = new Zend_Session_Namespace('Consultation');
        $libelgroupe    = $session->groupe    ;

        $ConsmoisTab      = new Admin_Model_DbTable_Consencai();
        $ConsmoisRows     = $ConsmoisTab->getConsencais();
        $numPage    = $this->_request->getParam('numpage', 1);

        $page       = Zend_Paginator::factory($ConsmoisRows);
        $page->setPageRange(5)
             ->setCurrentPageNumber($this->_getParam('page', $numPage))
             ->setItemCountPerPage($this->_getParam('par', $this->nbreLignes));

        $this->view->liste      = $page;
        $this->view->numPage    = $numPage;
    }
        public function afficherAction()      {
        $this->view->headLink()
                   ->appendStylesheet($this->view->baseUrl().'/styles/formlogin.css');
        $form                   = new Admin_Form_Conscours();
        $form->valider->setLabel('Consultation par groupe');
        $meserr     = '';
        $champFocus = 'libel_groupe';

         $request = $this->getRequest();


         if ($request->isPost()) {
             if ($form->isValid($request->getPost())) {
                Zend_Loader::loadClass('Zend_Filter_StripTags');
                $filter = new Zend_Filter_StripTags();
                $libelgroupe=trim($filter->filter($this->getRequest()->getPost('libelgroupe')));
                $session = new Zend_Session_Namespace('Consultation') ;
                $session->groupe = $libelgroupe ;
                $this->_forward("index");
            }
        }
        $this->view->form       = $form;
    $this->view->message    = '';
    }
}

   
Formulaire

<?php
class Admin_Form_Conscours extends Zend_Form {

      public function init()     {
        $this->setMethod('post')
             ->setName('consultationcours')
             ->setAttrib('name', 'conscours');
        $groupeTab   = new Admin_Model_DbTable_Groupe();
        $groupeRows  = $groupeTab->getGroupes();
        $groupes     = array();

        foreach ($groupeRows as $row) {
            $groupes[$row->id_groupe] = $row->libel_groupe;
        }

        $groupe  = new Zend_Form_Element_Select('libelgroupe');
        $groupe->setLabel('Groupe : ')
                  ->setMultiOptions($groupes)
                  ->setValue(0)
                  ->getDecorator('label')->setOption('tag', NULL);
        $this->addElement($groupe);
        $valider    = new Zend_Form_Element_Submit('valider');
        $valider->setIgnore(TRUE);
        $this->addElement($valider);

        $annuler    = new Zend_Form_Element_Submit('annuler');
        $annuler->setLabel('Annuler')
            ->setIgnore(TRUE);
        $this->addElement($annuler);
       
        $this->setDecorators(array(array('ViewScript',
                             array('viewScript' => 'consencaiscript.phtml'))));
    }
}

la vue:

<h2>Consultation des Encaissement par mois</h2>
<div align="center">
    <table>
        <tr>
            <th>Numero</th>
            <th>Professeur</th>
            <th>Eleve</th>
            <th>Groupe</th>
            <th>Montant regle</th>
            <th>Date</th>
        </tr>

        <?php foreach ($this->liste as $infoEncaissement) { ?>
        <tr>
            <td align="center">
                <?php echo $infoEncaissement->id_consencai; ?>
            </td>
            <td>
                <?php echo $infoEncaissement->np_professeur; ?>
            </td>
            <td align="center">
                <?php echo $infoEncaissement->np_eleve_consencai; ?>
            </td>
            <td align="center">
                <?php echo $infoEncaissement->libel_groupe_consencai; ?>
            </td>
            <td>
                <?php echo $infoEncaissement->montantregle_consencai; ?>Dhs
            </td>
            <td align="right">
                <?php echo $infoEncaissement->dtreglement_consencai; ?>Dhs
            </td>
        </tr>
        <?php } ?>
    </table>
</div>

Hors ligne

 

#7 29-11-2012 21:49:08

m_abrar
Membre
Date d'inscription: 01-03-2010
Messages: 12

Re: Récupération de la valeur sélectionnée d’une liste modifiable

J’ai oublié d' alimenter la fonction  getConsencais par    $libelgroupe  au niveau du controlleur
Le message  d’erreur  ci-dessus ne s’affiche plus OK
Après la correction le résultat retourné est vide (null)
A votre avis quel est le problème ?
Merci

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages