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 :

Problème avec find()


Sujet :

Zend Framework PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 10
    Par défaut Problème avec find()
    Salut

    je bosse actuellement sur un back-office d'un site : j'affiche les enregistrements et je dois pouvoir les modifier ou supprimer ou en ajouter grâce aux liens Modifier, supprimer, ajouter :

    donc voila le code du controleur qui me pose problème lors de l'enregistrement :

    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
     
    public function saveAction()
    {
    	require_once 'modules/disponibilite/models/formulairedisponibilite.php';
    	$this->view->titleedit = "Sauvegarder Article";
            $form = new FormulaireDisponibilite();
            $form->submit->setLabel('Enregistrer !!');
            $this->view->form = $form;
     
            if ($this->_request->isPost()) {
                     $formData = $this->_request->getPost();
                     if ($form->isValid($formData)) {
                             $disponibilite = new Disponibilite();
                             $id = (int)$form->getValue('id');
                             $row = $disponibilite->find($id);
                             $row->num_villa = $form->getValue('numvilla');
                             $row->type_villa = $form->getValue('typevilla');
    	                 $row->surface_rdc = $form->getValue('surfacerdc');
                             $row->surface_etage = $form->getValue('surfaceetage');
    			 $row->surface_habitable = $form->getValue('surfacehabitable');
                             $row->surface_plancher = $form->getValue('surfaceplancher');
    			 $row->surface_jardin = $form->getValue('surfacejardin');
                             $row->surface_totale = $form->getValue('surfacetotale');
                             $row->save(); // La ligne qui pose Problème :@
     
                             $this->_redirect('/disponibilite/admin');
                     }
    		 else {
                             $form->populate($formData);
                     }
             }
    	 else {
                     $id = (int)$this->_getParam('id', 0);
                     if ($id > 0) {
                            $disponibilite = new Disponibilite();
                            $dispo = $disponibilite->find($id) ;
    			$form->numvilla->setValue($dispo->num_villa) ;
    			$form->typevilla->setValue($dispo->type_villa) ;
    			$form->surfacerdc->setValue($dispo->surface_rdc) ;
    			$form->surfaceetage->setValue($dispo->surface_etage) ;
    			$form->surfacehabitable->setValue($dispo->surface_habitable) ;
    			$form->surfaceplancher->setValue($dispo->surface_plancher) ;
    			$form->surfacejardin->setValue($dispo->surface_jardin) ;
    			$form->surfacetotale->setValue($dispo->surface_totale) ;
                            //$form->populate($dispo->toArray());
                     }
             }
    }
    (j'ai utilisé setValue car populate ne voulait pas fonctionner )

    et quand je clique sur "Enregistrer !!" j'ai une jolie erreur qui sort :

    Fatal error: Call to undefined method Zend_Db_Table_Rowset::save() in /opt/lampp/htdocs/jardinDeLaColline/zr/modules/disponibilite/controllers/AdminController.php on line 41

    Des idées sur ce problème ??

    Merci d'avance

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

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    Essai avec à la place de find()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $disponibilite->fetchRow($disponibilite->select()
                                ->where('id = ?', 1));
    find() retournent un objet de type Zend_Db_Table_Rowset par contre
    fetchRow() retourne un objet de type Zend_Db_Table_Row ou il y a la method save.

  3. #3
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    Pour respecter le Pattern MVC les requêtes vers la base doivent être séparer du C (Controller), c'est le travail des M (Models).

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 10
    Par défaut
    Merci

    Apparemment j'ai toujours un problème avec save() :

    Fatal error: Call to a member function save() on a non-object in /opt/lampp/htdocs/jardinDeLaColline/zr/modules/disponibilite/controllers/AdminController.php on line 66

  5. #5
    Membre Expert
    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 : 39
    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
    Par défaut
    Il te faut faire le save sur l objet row

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 10
    Par défaut
    Même en utilisant le fetchRow ca marche pas

Discussions similaires

  1. [XL-2003] Problème avec Find lors d'une éxécution automatique
    Par gentyjp dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/10/2010, 10h05
  2. Problème avec .Find sur la première case
    Par Cipollini dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/07/2010, 15h29
  3. Problème avec .find et findnext
    Par VictoriusDan dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/12/2009, 04h23
  4. Problème avec Find(), Excel Vba
    Par mmmxtina dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 28/05/2009, 11h57
  5. Problème avec "find"
    Par tnarol dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 18/04/2008, 11h32

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