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

MVC PHP Discussion :

tuto MVC erreur : trying to get property of non object [Fait]


Sujet :

MVC PHP

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 73
    Points : 71
    Points
    71
    Par défaut tuto MVC erreur : trying to get property of non object
    bonjour tout le monde,
    j'ai suivi le tutoriel d'initiation à l'approche MVC avec zend. Au début tout marche bien, l'exemple donné dans le tutoriel fonctionne correctement mais quand j'ai essayé de développer un autre exemple j'ai trouvé un probléme dans la partie modification: quand je clique sur modifier les champs de texte qui devrait être remplis en principe par les valeurs de l'enregistrement à modifier sont remplis par une erreur dans le fichier form.phtml :
    trying to get property of non object on line X... est ce que quelqu'un pourrait m'aider à résoudre ce probléme? merci.

  2. #2
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Points : 2 498
    Points
    2 498
    Par défaut
    Peux-tu nous montrer la ligne ou se trouve l'erreur?
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 73
    Points : 71
    Points
    71
    Par défaut la ligne du code qui declenche l'erreur
    voici la ligne du code indiquée par l'erreur:
    <input type="text" name="login"
    value="<?php echo $this->escape($this->compte->login); ?>" />

    j'ai une table compte constituée de deux champs(login,pass);

  4. #4
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Points : 2 498
    Points
    2 498
    Par défaut
    Est-ce que tu passe bien l'objet compte à la vue? Parce que d'après l'erreur tu accèdes à un propriété qui n'existe pas!

    Avant de faire le render est-ce que tu fais bien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->view->compte = $compte // model compte
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  5. #5
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 73
    Points : 71
    Points
    71
    Par défaut code de la fonction de modification
    en fait je suis debutant je comprends pas ce que vous vouliez dire.
    de toutes façons voici le code de la fonction de modification:
    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
    	function modifierAction(){
    			//echo "<h1>dans compteController:modifierAction</h1>";
    			$this->view->title = "Modifier un compte!!";
    			$compte = new CompteGestion();
     
    			if($this->_request->isPost()){
    				Zend_Loader::loadClass('Zend_Filter_StripTags');
    				$filter = new Zend_Filter_StripTags();
     
    				$id = (int)$this->_request->getPost('idCompte');
    				$login = $this->_request->getPost('login');
    				$pass = $this->_request->getPost('pass');
    				$login = trim($login);
    				$pass = trim($pass);
     
    				if($id !=false){
    					if($login != '' && $pass != ''){
    						$data = array('login'=>$login,'pass'=>$pass);
    						$where = 'idCompte='.$id;
    						$compte->update($data,$where);
    						$this->_redirect('/compte');
    						return;
    					}
    					else{
    						$this->view->compte = $compte->fetchRow('idCompte='.$id);
    					}
    				}
    			}
    			else{
    				$id = (int)$this->_request->getParam('idCompte',0);
    				if($id>0){
    					$this->view->compte = $compte->fetchRow('idCompte='.$id);
    				}
    			}
     
    			$this->view->action = 'modifier';
    			$this->view->buttonText = 'Mettre a jour';
    			//$this->render();
    	}

  6. #6
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Points : 2 498
    Points
    2 498
    Par défaut
    Peux-tu me donner le lien vers le tutoriel que tu as suivis? Car le code m'a l'air assez correct. Est-tu sûr du nom des champs?
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  7. #7
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 73
    Points : 71
    Points
    71
    Par défaut voici le lien du tuto
    oui je suis sur des noms des champs.
    voici le lien vers les tuto:
    http://g-rossolini.developpez.com/tu...ework/debuter/
    je vous remercie bcp pour votre aide.

  8. #8
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Points : 2 498
    Points
    2 498
    Par défaut
    Apparemment tu as changé le model étant donné que dans le tutoriel il s'agit d'Album et non pas de CompteGestion!

    Par contre j'ai repéré une erreur, peut-être une erreur de copie.

    Hors dans ton code:

    Essaye d'ajouter un égal.

    PS: Utilise la balise CODE quand tu poste du code sur le forum. Pour ceci surligne ton code et clique sur le petit icône # en haut de l'éditeur.
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  9. #9
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 73
    Points : 71
    Points
    71
    Par défaut le code est correct
    en fait même si j'ajoute le '=' ça ne marche pas.
    j'ai réalisé l'exemple du tuto et tout marche bien mais quand j'ai essayé de développer mon propre exemple c'est là que ça bloque.

  10. #10
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Points : 2 498
    Points
    2 498
    Par défaut
    Bon ce qui est sûr c'est que dans ton objet compte que tu passes à la vue il n'y a pas la propriété souhaitée. Tu peux nous montrer la structure de la table ainsi que la classe de model CompteGestion ?
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  11. #11
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 73
    Points : 71
    Points
    71
    Par défaut ok voici les codes
    la table est:compte_intranet(idCompte,login,pass)
    mon model 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
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    <?php
    class CompteController extends Zend_Controller_Action{
     
    	function init(){
    		$this->view->baseUrl = $this->_request->getBaseUrl();
    		Zend_Loader::loadClass('compteGestion');
    	}
     
    	function indexAction(){
    			//echo "<h1>dans compteController:indexAction</h1>";
    			$this->view->title = "liste des comptes!!";
    			$compte = new CompteGestion();
    			$this->view->comptes = $compte->fetchAll();
    			//$this->render();
    	}
     
    	function ajouterAction(){
    			//echo "<h1>dans compteController:ajouterAction</h1>";
    			$this->view->title = "Ajouter compte!!";
    			if($this->_request->isPost()){
    				Zend_Loader::loadClass('Zend_Filter_StripTags');
    				$filter = new Zend_Filter_StripTags();
    				$login = $filter->filter($this->_request->getPost('login'));
    				$login = trim($login);
    				$pass = $filter->filter($this->_request->getPost('pass'));
    				$pass = trim($pass);
     
    				if($login !='' && $pass !=''){
    					$data = array( 'login'=>$login, 'pass' =>$pass);
    					$compte = new CompteGestion();
    					$compte->insert($data);
    					$this->_redirect('/compte');
    					return;
    				}
    			}
     
    			$this->view->compte = new stdClass();
    			$this->view->compte->idCompte = null;
    			$this->view->compte->login = '';
    			$this->view->compte->pass = '';
     
    			$this->view->action = 'ajouter';
    			$this->view->buttonText = 'Ajouter';
     
    			//$this->render();
    	}
     
    	function modifierAction(){
    			//echo "<h1>dans compteController:modifierAction</h1>";
    			$this->view->title = "Modifier un compte!!";
    			$compte = new CompteGestion();
     
    			if($this->_request->isPost()){
    				Zend_Loader::loadClass('Zend_Filter_StripTags');
    				$filter = new Zend_Filter_StripTags();
     
    				$id = (int)$this->_request->getPost('idCompte');
    				$login = $this->_request->getPost('login');
    				$pass = $this->_request->getPost('pass');
    				$login = trim($login);
    				$pass = trim($pass);
     
    				if($id !== false){
    					if($login != '' && $pass != ''){
    						$data = array('login'=>$login,'pass'=>$pass);
    						$where = 'idCompte='.$id;
    						$compte->update($data,$where);
    						$this->_redirect('/compte');
    						return;
    					}
    					else{
    						$this->view->compte = $compte->fetchRow('idCompte='.$id);
    					}
    				}
    			}
    			else{
    				$id = (int)$this->_request->getParam('idCompte',0);
    				if($id>0){
    					$this->view->compte = $compte->fetchRow('idCompte='.$id);
    				}
    			}
     
    			$this->view->action = 'modifier';
    			$this->view->buttonText = 'Mettre a jour';
    			//$this->render();
    	}
     
    	function supprimerAction(){
    			$this->view->title = "Supprimer un compte!!";
    			$compte = new CompteGestion();
     
    			if($this->_request->isPost()){
    				Zend_Loader::loadClass('Zend_Filter_Alpha');
    				$filter = new Zend_Filter_Alpha();
    				$id = (int)$this->_request->getPost('idCompte');
    				$del = $filter->filter($this->_request->getPost('del'));
     
    				if( $del == 'oui' && $id > 0){
    					$where = 'idCompte='.$id;
    					$rows_affected = $compte->delete($where);
    				}
    			}
     
    			else{
    				$id = (int) $this->_request->getParam('idCompte');
    				if($id > 0){
    					$this->view->compte = $compte->fetchRow('idCompte = '.$id);
     
    					if($this->view->compte->idCompte > 0){
    						return;					
    					}
    				}
    			}
    			$this->_redirect('/compte');
    	}
    }
    ?>
    dsl il y a bcp de code

  12. #12
    Membre régulier

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 73
    Points : 71
    Points
    71
    Par défaut l'erreur residait dans index.phtml
    bonjour
    je remercie vivement yoteco pour son aide et pour le temps qu'il a consacré pour résoudre mon probleme.
    en fait le probleme était dans la récupération de l'id au niveau de getParam...
    la page d'index envoyait un parametre appelé id et moi je récupérais un idCompte, du coup la valeur retournée est celle par défaut càd 0, quand le modéle essayait de récupèrer l'enregistrement d'id 0 il ne le trouvait pas et c'est cela qui déclenche l'erreur.

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

Discussions similaires

  1. [PDO] Trying to get property of non-object
    Par ledisciple dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 17/03/2012, 12h01
  2. [MySQL] Erreur de type : "Trying to get property of non-object in"
    Par Prisss dans le forum PHP & Base de données
    Réponses: 25
    Dernier message: 16/12/2010, 07h02
  3. [Joomla!] [Adsmanager] Notice: Trying to get property of non-object in C:\Program Files\EasyPHP
    Par ninobrown dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 13/04/2009, 21h13
  4. Réponses: 3
    Dernier message: 08/02/2008, 20h02
  5. [POO] Erreur Trying to get property of non-object
    Par Niouts dans le forum Langage
    Réponses: 14
    Dernier message: 13/09/2006, 10h09

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