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

Zend Framework Requête paramétrée


Sujet :

Zend_Db PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Points : 9
    Points
    9
    Par défaut Zend Framework Requête paramétrée
    Bonjour ;
    Pouvez-vous m’aider ?
    Lorsque j’essaye d’afficher le résultat d’une requête paramétrée je reçois le message suivante :
    Warning: Invalid argument supplied for foreach() in C:\wamp\www\cdfc\application\modules\admin\views\scripts\consencai\encais .phtml on line 36
    La ligne 36 correspond à la première ligne dans l’extrait du fichier encais .phtml ci dessous
    Merci

    Modèle :
    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
     
    <?php
    class Admin_Model_DbTable_Consencai extends Zend_Db_Table_Abstract {
        protected $_name    = 'tconsencai';
        protected $_primary = 'id_consecai';
     
        public function pargroupe($parametres = NULL) {
     
    	 try {
    		$select = $this->select();
    		            if ($parametres) {
                             $select->where($this->getAdapter()->quoteIdentifier("libel_groupe_consencai").'=?',$parametres);
                                    ->order('np_eleve_consencai  ASC');
    						 }
    						 $encaiRows = $this->fetchAll($select);
                             $rows       = array();
                             foreach ($encaiRows as $encaiRow) {
                    $rows[] = new Admin_Model_Consencai($encaiRow);
                }
                return $rows;
            }
    		        catch (Exception $e) {
                echo "consConsencai<br />";
                echo $e->getMessage();
                exit;
            }
        }
    Contrôleur :
    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
     
    <?php
    class Admin_ConsencaiController extends Zend_Controller_Action {
        public function init() {    }
        public function indexAction() { }
        public function encaisAction() {
    		$form = new Admin_Form_Conscours();
    			if ($this->_request->isPost()) {
    				$formData   = $this->_request->getPost();
    						$parametres    = $formData['libel_groupe'];
    						$donnees   = new Admin_Model_DbTable_Consencai();
    						$this->view->rows = $donnees->pargroupe($parametres);
    						$this->view->texte=$texteAAfficher;
     
    			}
     
    	}
        public function afficherAction() {
            $this->view->headLink()
                       ->appendStylesheet($this->view->baseUrl().'/styles/formlogin.css');
            $form                   = new Admin_Form_Conscours();
            $this->view->form       = $form;
            $this->view->message    = '';
        }
    }
    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
     
    <?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->libel_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);
            $this->setDecorators(array(array('ViewScript',
                                 array('viewScript' => 'consultscript.phtml'))));
        }
    }
    consultscript.phtml (Pour afficher 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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    <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 </b>
      </td>
      <td align="center"><b>Cliquez sur le lien correspondant a votre choix </b>
      </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'=>'encais'),
                                         'default', true) ?>">
    				Consultation par groupe
    			</a>
    	</div>  
     
      </td>
    </tr>
     
    </table>
    </form>
    afficher.phtml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <center><h1>Consultations des encaissements</h1></center>
    <br><br>
    <?php
    $this->form->setAction($this->url());
    echo $this->form;
    Extrait du consultscript.phtml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ...........
            <?php foreach ($this->rows as $infoEncaissements) { ?>
            <tr>
                <td class="colg1"align="center">
                    <?php echo $infoEncaissements->np_professeur; ?>
                </td>
     
                <td class="colg1"align="center">
                    <?php echo $infoEncaissements->np_eleve_consencai; ?>
                </td>
    ...........

  2. #2
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Bonsoir,
    Tu es sur de la syntaxe ?
    Car je n'utile pas du tout cette syntaxe, j'utilise array_push, il me semble que ta syntaxe c'est pour php 5.4 (mais je dis peut être une grosse connerie vu que je n'utilise pas cette syntaxe)

  3. #3
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2012
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2012
    Messages : 107
    Points : 86
    Points
    86
    Par défaut
    où est ton encais .phtml ? Bon je suppose que c'est le dernier quote, tu as du te trompé de nom.

    Dans ton model:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $rows[] = new Admin_Model_Consencai($encaiRow);
    ce n'est pas bon.
    Pourquoi tu veux refaire un tableau?
    fetchall() te retourne déjà un tableau.

    j'aurais plutôt écris ça comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ($parametres) {
        return $this->fetchAll($this->select()
        ->where($this->getAdapter()->quoteIdentifier("libel_groupe_consencai").'=?', $parametres);
        ->order('np_eleve_consencai  ASC');
    }
    Par contre, j'ai un doute sur la justesse de ton where, que veux tu sélectionner?

  4. #4
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Points : 9
    Points
    9
    Par défaut Zend Framework Requête paramétrée
    Bonjour,
    Premièrement je remercie 5h4rk et Sereine
    Effectivement Sereine au niveau du dernier morceau du code je me suis trompé du nom du fichier , il s’agit de encais .phtml ceci d’une part d’autre part même si je remplace le modèle consencai.php par le code ci-dessous le message d’erreur est toujours le même.

    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
     
    <?php
    class Admin_Model_DbTable_Consencai extends Zend_Db_Table_Abstract {
        protected $_name    = 'tconsencai';
        protected $_primary = 'id_consecai';
     
        public function pargroupe($parametres = NULL) {
     
    	try {
               if ($parametres) {
               return $this->fetchRow($this->select()
                                                  ->where($this->getAdapter()->quoteIdentifier("libel_groupe_consencai").'=?',$parametres);
                                           ->order('np_eleve_consencai ASC');
                   }
                   catch (Zend_Db_Exception $e) {
                   echo "consConsencai<br />";
                   printf("Erreur SQL :%s",$e->getMessage());
                   exit;
                   }
    		}
    	}	
    }
    Extrait du encais.phtml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ...........
            <?php foreach ($this->rows as $infoEncaissements) { ?>
            <tr>
                <td class="colg1"align="center">
                    <?php echo $infoEncaissements->np_professeur; ?>
                </td>
     
                <td class="colg1"align="center">
                    <?php echo $infoEncaissements->np_eleve_consencai; ?>
                </td>
    Merci

  5. #5
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2012
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2012
    Messages : 107
    Points : 86
    Points
    86
    Par défaut
    je pense pas que ton where soit juste, dis moi ce que tu veux selectionner avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ->where($this->getAdapter()->quoteIdentifier("libel_groupe_consencai").'=?',$parametres);
    Ensuite je te conseille de tester de débugger ton application avec var_dump();

    fait un var_dump($donnees->pargroupe($parametres)); histoire de voir ce que ça t'affiche, dans ton controller.

  6. #6
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Points : 9
    Points
    9
    Par défaut Zend Framework Requête paramétrée
    La définition de la table sur laquelle j’essaye d'exécuter la requête est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE TABLE IF NOT EXISTS `tconsencai` (
      `id_consencai` int(11) NOT NULL AUTO_INCREMENT,
      `np_professeur` varchar(60) NOT NULL,
      `np_eleve_consencai` varchar(60) NOT NULL,
      `libel_groupe_consencai` varchar(60) NOT NULL,
      `tprestation_consencai` smallint(6) NOT NULL DEFAULT '0',
      `prix_consencai` float NOT NULL ,
      `montantregle_consencai` float NOT NULL ,
      `treglement_consencai` smallint(6) NOT NULL DEFAULT '0',
      `dtreglement_consencai` date,
      `com_consencai` varchar(100) NOT NULL,
     
      PRIMARY KEY (`id_consencai`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=21 ;
    L’équivalent de ma requête en sql est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM `tconsencai` WHERE `libel_groupe_consencai` LIKE 'parametre'
    parametre je doit le récupérer du formulaire à l'aide de la méthode post

Discussions similaires

  1. Requête sql + zend framework
    Par saidi.nizar dans le forum Zend Framework
    Réponses: 1
    Dernier message: 20/03/2013, 15h32
  2. Réponses: 3
    Dernier message: 08/06/2010, 11h16
  3. [VB.NET] [ADO.NET] Requête paramétrée
    Par DotNET74 dans le forum Accès aux données
    Réponses: 2
    Dernier message: 11/03/2005, 08h39
  4. Requête paramétrée qui remplit une DBLookUpComboBox
    Par navis84 dans le forum Bases de données
    Réponses: 6
    Dernier message: 02/12/2004, 21h23
  5. VBA & Requête paramétrée
    Par gripoil dans le forum Access
    Réponses: 4
    Dernier message: 25/11/2004, 09h54

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