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 :

Probleme avec l'instruction populate et la récuperation de l'enregistrement de la base données


Sujet :

Zend Framework PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2012
    Messages : 34
    Points : 27
    Points
    27
    Par défaut Probleme avec l'instruction populate et la récuperation de l'enregistrement de la base données
    Bonjour , je suis en train de developper une application de gestion des stages en php5 et j'utilise le framework zend et je le connai pas bc voici le code de fonction modifier qui permet de modifier un encadreur dans le controlleur encadreur :
    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
    public function modifierAction()
        {
           $form = new Application_Form_ModifEncadreur();
    		$this->view->form = $form;
    		if ($this->getRequest()->isPost()) {
            $formData = $this->getRequest()->getPost();
            if ($form->isValid($formData)) {
                $id_encadreur = (int)$form->getValue('id_encadreur');
    			$nom_encadreur = $form->getValue('nom_encadreur');
    			$prenom_encadreur = $form->getValue('prenom_encadreur');
    			$mail_encadreur = $form->getValue('mail_encadreur');	
    			$tel_encadreur = $form->getValue('tel_encadreur');
    			$nom_etab = $form->getValue('nom_etabli');
    			$encadreur = new Application_Model_Encadreur();
    			$encadreur->modifierEncadreur($id_encadreur,$nom_encadreur,$nom_etab,$prenom_encadreur,$email_encadreur,$tel_encadreur);
    			$this->_redirect('/');
            } else {
                $form->populate($formData);
            }
        } else {
            $id_encadreur = $this->_getParam('id', 0);
    		echo $id_encadreur;
            if ($id_encadreur > 0) {
                $encadreur = new Application_Model_Encadreur();
                $form->populate($encadreur->obtenirEncadreur($id_encadreur));
            }
        }
        }
    et voila le model que j'utilise pour récuperer les enregistrement de BD et j'utilise deux fonction dans ce modele obtenirEncadreur() pour recuperer l'encadreur et modifierEncadreur() pour la mettre a jour :
    public function
    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
    modifierEncadreur($id_encadreur,$nom_encadreur,$nom_etab,$prenom_encadreur,$email_encadreur,$tel_encadreur)	
    	{
    		$data = array(
                       'nom_encadreur' => $nom_encad,
    				   'nom_etablissement' => $nom_etab,
                       'prenom_encadreur' => $prenom_encad,
    				   'email_encadreur' => $email_encad,
                       'tel_encadreur' => $tel_encad
    				   );	
    		$this->update($data, 'id = '. (int)$id_encadreur);		   
     
    	}
     
    	public function obtenirEncadreur($id_encadreur)
        {
     
            $id_encadreur = (int)$id_encadreur;
    		$db = new Zend_Db_Adapter_Pdo_Mysql(array('host' => 'localhost','username' => 'root','password' => '','dbname' => 'Stages'));
    		$sql="SELECT * from encadreur where id_encadreur ='$id_encadreur' ";
    		$db->setFetchMode(Zend_Db::FETCH_OBJ); 
            $enreg = $db->fetchRow($sql);
            if (!$row) {
                throw new Exception("Enregistrement non trouvé");
            }
            return $row->toArray();
        }
    et je pense que le probleme et dans la fonction obtenirEncadreur() car j'utilise zend_adapter et non pas zend_dbTable est ce que vous pouver m'aider svp ???

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    Fait un print_r de la fonction "$encadreur->obtenirEncadreur($id_encadreur)" pour voir si le resultat retourner et une table key => valeur et que les key on le meme nom que les noms de tes input.

    sinon tu pourra utilisé la fonction fetchRow de Eend_DbTable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public function obtenirEncadreur($id_encadreur)
        {
     
            $id_encadreur = (int)$id_encadreur;
    	return $this->fetchRow($condition);
        }
    A la recherche d'un film : http://chercher-un-film.com

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2012
    Messages : 34
    Points : 27
    Points
    27
    Par défaut
    tout d'abord merci pour votre aide m4riachi mais j'ai pas bien compris ce que vous vouler dire exactement mon probleme exactement et que j'utilise zend adapter alors que la methode toArray() ne fonctionne pas que avec zend_DBTable et je cherche comment faire d'une autre maniére .

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2012
    Messages : 34
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par m4riachi Voir le message
    Fait un print_r de la fonction "$encadreur->obtenirEncadreur($id_encadreur)" pour voir si le resultat retourner et une table key => valeur et que les key on le meme nom que les noms de tes input.

    sinon tu pourra utilisé la fonction fetchRow de Eend_DbTable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public function obtenirEncadreur($id_encadreur)
        {
     
            $id_encadreur = (int)$id_encadreur;
    	return $this->fetchRow($condition);
        }
    tout d'abord merci pour votre aide m4riachi mais j'ai pas bien compris ce que vous vouler dire exactement mon probleme exactement et que j'utilise zend adapter alors que la methode toArray() ne fonctionne pas que avec zend_DBTable et je cherche comment faire d'une autre maniére .

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    A la place de l'adapter travail directement avec zend_DbTable avec sa methode fetchRow comme j'ai mentionné auparavant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public function obtenirEncadreur($id_encadreur)
        {
     
            $id_encadreur = (int)$id_encadreur;
    	return $this->fetchRow(array ('id = ?' => $id_encadreur));
        }
    Sinon alors j'ai pas bien compris ton problème
    A la recherche d'un film : http://chercher-un-film.com

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2012
    Messages : 34
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par m4riachi Voir le message
    A la place de l'adapter travail directement avec zend_DbTable avec sa methode fetchRow comme j'ai mentionné auparavant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public function obtenirEncadreur($id_encadreur)
        {
     
            $id_encadreur = (int)$id_encadreur;
    	return $this->fetchRow(array ('id = ?' => $id_encadreur));
        }
    Sinon alors j'ai pas bien compris ton problème
    mon probleme est que j'ai un formulaire pour modifier un encadreur et je veut lorsque je clique sur le lien modifier ce formulaire va etre rempli par les information de l'encadreur concérne et je sais pas utiliser zend_dbtable c pour sa je cherche une fonction ou une methode me permet de faire sa sans utiliser zend_dbtable

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2012
    Messages : 34
    Points : 27
    Points
    27
    Par défaut
    voila le message d'errur qui me sort peut etre sa vous aide
    Fatal error: Call to undefined method stdClass::toArray() in C:\wamp\www\stages\application\models\Encadreur.php on line 48

  8. #8
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    Puis ce que la modification t'a utilise zend_dbtable alors utilise la même dans la sélection.
    c'est plus simple que le code que tu fais, utilise la fonction que je t'ai écrit et vois le résultats
    A la recherche d'un film : http://chercher-un-film.com

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2012
    Messages : 34
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par m4riachi Voir le message
    Puis ce que la modification t'a utilise zend_dbtable alors utilise la même dans la sélection.
    c'est plus simple que le code que tu fais, utilise la fonction que je t'ai écrit et vois le résultats
    nn pour la selection c'est bon et pour la modification j'ai travaillers avec db_adapter mais le code de la fonction modification je l'ai trouver sur internet et j'ai essayer de l'adapter a mes besoin j'ai reussi a changer tous sauf cette methode toarray() pour cela je cherche qq chose ou une façon de récuperer les donneés et l'afficher dans le formulaire

  10. #10
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Points : 1 101
    Points
    1 101
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public function obtenirEncadreur($id_encadreur)
        {
     
            $id_encadreur = (int)$id_encadreur;
    		$db = new Zend_Db_Adapter_Pdo_Mysql(array('host' => 'localhost','username' => 'root','password' => '','dbname' => 'Stages'));
    		$sql="SELECT * from encadreur where id_encadreur ='$id_encadreur' ";
    		$db->setFetchMode(Zend_Db::FETCH_OBJ); 
            return $db->fetchRow($sql);
        }
    A la recherche d'un film : http://chercher-un-film.com

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2012
    Messages : 34
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par m4riachi Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public function obtenirEncadreur($id_encadreur)
        {
     
            $id_encadreur = (int)$id_encadreur;
    		$db = new Zend_Db_Adapter_Pdo_Mysql(array('host' => 'localhost','username' => 'root','password' => '','dbname' => 'Stages'));
    		$sql="SELECT * from encadreur where id_encadreur ='$id_encadreur' ";
    		$db->setFetchMode(Zend_Db::FETCH_OBJ); 
            return $db->fetchRow($sql);
        }
    j'ai essayer ce code mais il me rend ce message d'erreur
    Catchable fatal error: Argument 1 passed to Zend_Form::populate() must be an array, object given, called in C:\wamp\www\stages\application\controllers\EncadreurController.php on line 77 and defined in C:\wamp\www\stages\library\Zend\Form.php on line 2039

  12. #12
    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,
    retourne un objet

    dans ton controlleur, tu peux faire un ->toArray() sur le résultat retourné et que tu passe dans le populate

Discussions similaires

  1. Probleme avec l'instruction if - comparaison de 2 noms
    Par C.R.E.A.M dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/07/2007, 22h54
  2. Probleme avec l'instruction AS
    Par LP-mpascolo dans le forum Langage SQL
    Réponses: 14
    Dernier message: 16/04/2007, 15h39
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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