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 :

Mettre à jour le profil [ZF 1.11]


Sujet :

Zend_Db PHP

  1. #1
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 282
    Points : 103
    Points
    103
    Par défaut Mettre à jour le profil
    Bonjour tous le monde,

    Comme j'avances timidement sur zend je souhaiterais savoir comment afficher les données d'un user une fois qu'il se connecte sur son interface et souhaite mettre à jour son profil. Mon bout de code est comme suit :

    Formulaire editUser.php :
    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
    class Application_Form_EditUser extends Zend_Form
    {
        public function init()
        {
            $this->setName('/user/edit');        
            $this->setAction();
     
            $nom = new Application_Form_EText( 'nom', 'Nom : ' );
            $nom->addValidator('StringLength', false, array(6, 20));
     
            $prenom = new Application_Form_EText( 'prenom', 'Prenom : ' );
            $adresse = new Application_Form_EText( 'adresse', 'Adresse : ' );
     
            $codePostale = new Application_Form_EText( 'codePostale', 'Code Postale : ' );
            //$codePostale->addValidator(new Zend_Validate_Regex('#[0-9]{2} ?[0-9]{3}#'));
     
            $ville = new Application_Form_EText( 'ville', 'Ville : ' );
     
            $telMobile = new Application_Form_EText( 'telMobile', 'Numero de telephone mobile : ' );
            //$telMobile->setRequired(false)->addValidator('Digits')->addValidator(new Zend_Validate_StringLength(8));
     
            $telFixe = new Application_Form_EText( 'telFixe', 'Numero de telephone fixe : ' );
            //$telFixe->setRequired(false)->addValidator('Digits')->addValidator(new Zend_Validate_StringLength(8));
     
     
            $submit = new Zend_Form_Element_Submit ( 'submit' );
            $submit->setAttrib ( 'class', 'submitbutton' )->setLabel ( 'Update' )->setAttrib('class', 'submit');
     
            $elements = array($nom, $prenom, $adresse, $codePostale, $ville, $telMobile, $telFixe, $submit);  
     
            $this->addElements( $elements );
        }
    }
    Le controlleur UserController.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class UserController extends Zend_Controller_Action
    {
     
          $id = Zend_Auth::getInstance()->getIdentity()->id;
            $nom = Zend_Auth::getInstance()->getIdentity()->nom;
            $prenom = Zend_Auth::getInstance()->getIdentity()->prenom;   
     
            $editform = new Application_Form_EditUser();
     
            echo "id :".$id." nom ".$nom." prenom : ".$prenom;
     
       }
    Jusqu'ici je peux afficher les données (id, nom, prenom)
    model user.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Application_Model_DbTable_Users extends Zend_Db_Table_Abstract
    {
            protected $_name = 'user';        
    }
    Une question bête mais comment puis-je afficher ses données dans les input?

    Merci de m'aider.

  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
    Bonjour il te faut utiliser populate sur l instance de ton formulaire

  3. #3
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 282
    Points : 103
    Points
    103
    Par défaut
    Bonjour tous le monde,

    Merci 5h4rk d'avoir pris le temps pour me répondre. ce que j'ai fait comme code :
    Dans le model user.php
    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
    class Application_Model_DbTable_Users extends Zend_Db_Table_Abstract
    {
     
        protected $_name = 'user';    
     
        public function getUser($id)
        {
            $id = (int)$id;
            $row = $this->fetchRow( 'id = '. $id); //recupération de toutes les informations de la table user
            if (!$row) {
                    throw new Exception ("Could not find row $id");
                }
            return $row->toArray();
     
        }
    }
    UserController.php
    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
        public function editAction()
        {
            $id = Zend_Auth::getInstance()->getIdentity()->id;        
            $editform = new Application_Form_EditUser();
     
            echo "id :".$id." nom ".$nom." prenom : ".$prenom;
     
            $this->view->editform = $editform ;
     
            $id = $this->_getParam('id', 0);
            $us = new  Application_Model_DbTable_Users();        
     
            $profil = $us->getUser($id);
            $editform->populate($profile->toArray());
     
        }
    Normalement c'est a ce niveau ou je le probleme
    $profil = $us->getUser($id);
    $editform->populate($profile->toArray());
    Merci de me débloquer.

  4. #4
    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
    Regarde ton code tu fais ton toArray sur un tableau

  5. #5
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 282
    Points : 103
    Points
    103
    Par défaut
    J'ai refais moncontrôleur, j'ai constaté que j'envoi un joli 0 dans Id. normalement je dois mettre $id = Zend_Auth::getInstance() apres l'affichage du formulaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     public function editAction()
        {
            $editform = new Application_Form_EditUser();
            $this->view->editform = $editform ;
     
            $id = $this->_getParam('id', 0); //on récupère l'id user par le champ hidden
            $id = Zend_Auth::getInstance()->getIdentity()->id;
            echo "id : ".$id;
            $info_user = new  Application_Model_DbTable_Users();        
            $profil = $info_user->getUser($id);
            Zend_Debug::dump($profil);
            $editform->populate($profile->getUser($id));
        }
    Résultat obtenu c'est que tous mes données son affiché dans array hors je souhaiterais les mettre chaque champs dans un input.

  6. #6
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 282
    Points : 103
    Points
    103
    Par défaut
    Je pense il y a quelque chose qui m'echappe.
    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
     
       public function editAction()
        {
            $editform = new Application_Form_EditUser();
            $this->view->editform = $editform ;
            $id = Zend_Auth::getInstance()->getIdentity()->id;
     
            $info_user = new  Application_Model_DbTable_Users();        
            $profil = $info_user->getUser($id);
            Zend_Debug::dump($profil);
     
            $data[] = array();
            $data['id'] = $profil->getId();
            $data['nom'] = $profil->getNom();
            $data['prenom'] = $profil->getPrenom();      
            $editform->populate($data);
     
        }
    Je vois Array rempli par les données mais sans view.

  7. #7
    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
    Je n 'ai rien compris

  8. #8
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 282
    Points : 103
    Points
    103
    Par défaut
    Pour faire une modification je dois avoir afficher les enregistrements dans les champs de saisi. Mais ce que j'obtient comme résultat est comme suit :
    array
    'id' => string '4' (length=1)
    'email' => string 'test@gmail.com' (length=14)
    'password' => string '8d5e957f297893487bd98fa830fa6413' (length=32)
    'nom' => string 'Attach' (length=10)
    'prenom' => string 'Nickol' (length=8)
    'adresse' => string 'Charle' (length=11)
    'codePostale' => string 'D2c4f7' (length=6)
    'ville' => string 'France' (length=8)
    'telMobile' => string '54125426398' (length=11)
    'telFixe' => string '51425896324' (length=11)
    'newsletter' => string '0' (length=1)

  9. #9
    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
    C'est normal que tu obtiennes cela.

    Tu fais un Zend_Debug.

    Il serait bien qu'un jour tu te décide à chercher à comprendre par tes propres moyens ce que tu fais.

  10. #10
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 282
    Points : 103
    Points
    103
    Par défaut
    Citation Envoyé par 5h4rk Voir le message
    C'est normal que tu obtiennes cela.

    Tu fais un Zend_Debug.

    Il serait bien qu'un jour tu te décide à chercher à comprendre par tes propres moyens ce que tu fais.
    Merci beaucoup 5h4rk pour ton humble aide. Au moin Zend_debug me dis que ma requête fonctionne car sans lui j'ai une belle page blanche.

  11. #11
    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
    Tu devrais voir pour afficher les erreurs

  12. #12
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 282
    Points : 103
    Points
    103
    Par défaut
    Enfin j'ai résolu mon probleme. C'est tres simple mais c'est pas évident pour un débutant. Voila le code. Je publie pour ceux qui ont rencontré même probleme que le mien :
    $editform = new Application_Form_EditUser();
    $this->view->editform = $editform ;
    $id = Zend_Auth::getInstance()->getIdentity()->id;

    $info_user = new Application_Model_DbTable_Users();
    //$profil = $info_user->getUser($id);

    $editform->populate($info_user->getUser($id))
    Merci pour l'equipe.

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

Discussions similaires

  1. Comment mettre à jour mon profil
    Par Salma2013 dans le forum Emploi
    Réponses: 12
    Dernier message: 09/11/2013, 22h11
  2. Mettre a jour son profil
    Par attalsebastien dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 1
    Dernier message: 03/08/2009, 11h57
  3. Réponses: 1
    Dernier message: 01/03/2007, 16h30
  4. Réponses: 3
    Dernier message: 09/07/2004, 10h23
  5. Réponses: 6
    Dernier message: 14/02/2003, 16h52

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