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

problème update et génération form préremplie


Sujet :

Zend_Form PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 118
    Points : 52
    Points
    52
    Par défaut problème update et génération form préremplie
    Bonjour à tous,

    j'ai un problème au niveau de la modification de données.
    je m'explique quand je clique sur mon lien, la barre d'adresse contient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    notice:%20Undefined%20index:%20id%20in%20/var/www/WebMRL/application/views/scripts/configuration/consulterunservice.phtml%20on%20line%2032/WebMRL/public/index.php/configuration/modifierservice
    qui représente cette ligne de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <td><a href="<?php echo $this->url(array('controller'=> 'configuration','action'=>'modifierservice','id'=>$service['id']), null, true); ?>">Modifier</a>
    dans la page, firefox me stipule: L'adresse n'a pas été reconnue,Firefox ne sait pas ouvrir cette adresse car le protocole (notice) n'est associé à aucun programme. Il est peut-être nécessaire d'installer une autre application pour ouvrir ce type d'adresse.

    Pourriez vous m'aider à comprendre mon erreur s'il vous plaît pourtant je pensais que ma syntaxe était bonne.

    Dans mon controller, j'ai ceci:

    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
     
    public function modifierserviceAction()
    	{
     
     
    		try {
    			$form = new Application_Form_Modifierservice();
    			$form->setMethod('post');
    			$this->getRequest()->getParam ( 'id' );
    			$form->init();
    			$this->view->formModifierService = $form;
    		  }catch (Zend_Exception $e) {
    			$this->view->formModifierService = $e->getMessage();
    		  }
    		if ($this->_request->isPost()) {
                $formData = $this->_request->getPost();
                if ($form->isValid($formData)) {
                    $service = new Application_Model_DbTable_Service();
    				$this->view->service = $service->searchService($result);
                    $id = (int)$form->getValue('id');
                    $row = $service->fetchRow('id='.$id);
                    $row->name = $form->getValue('name');
                    $row->link_description = $form->getValue('link_description');
    				$row->enable = $form->getValue('enable');
                    $row->updateService($formData);
    				//$service->ajouterService($formData);
                    $this->_redirect('/');
                } else {
                    $form->populate($formData);
                }
            } else {
     
                $id = (int)$this->_request->getParam('id', 0);
                if ($id > 0) {
                    $service = new services();
                    $services = $service->fetchRow('id='.$id);
                    $form->populate($services->toArray());
                }
            }
    	}
    mon db_table:

    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
     
    public function searchService($result)
    	{
    				$select = $this->select()
                    ->setIntegrityCheck(false)
                    ->from(array('s' => 'service'),
    					   array('id'));
     
    		$result = $this->getDbTable()->find($idservice);
                if (0 == count($result)) {
                    return;
                }
     
                //initialisation de la variable $row avec l'entrée récupérée
                $row = $result->current();
     
                //setting des valeurs dans notre objet $service passé en argument
                $service->setIdservice($row->id);
                $service->setName($row->name);
                $service->setLinkdescription($row->link_description);
                $service->setEnable($row->enable);
    	}
    	public function updateService($data)
    	{
    		$select = $this->select()
                    ->setIntegrityCheck(false)
                    ->from(array('s' => 'service'),
    					   array('id'));
     
    		$data = $this->update($select);
     
    	}
    et mon 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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    class Application_Form_Modifierservice extends Zend_Form
    {
     
        public function init()
        {
            /* Form Elements & Other Definitions Here ... */
    		$idservice = new Zend_Form_Element_Hidden('id');
     
    		$service = new Zend_Form_Element_Text('name');
    		//Définition du validateur pour vérifier si le service existe
    		$validator = new Zend_Validate_Db_NoRecordExists('service', 'name');
    		if ($validator->isValid($service)) {
    			// Le nom d'utilisateur semble absent de la table
    		} else {
    			// invalide : l'utilisateur est probablement présent dans la table
    			$messages = $validator->getMessages();
    			foreach ($messages as $message) {
    				echo "$message\n";
    			}
    		}
    		$service->setLabel('Service')
    				->setRequired(true)
    				->addFilter('StringTrim')
    				->addValidator($validator)
    				->addValidator('NotEmpty');
    		// Définition validateur du textarea limitant max 500 caractères
    		$validatorarea = new Zend_Validate_StringLength(array('min' => 0,'max' => 500));
    		if ($validatorarea->isValid("")) {
    			// retourne true
    			}else{
    		echo "Longueur du champ restreint &agrave; 500";
    			}
     
    		$description = new Zend_Form_Element_Textarea('link_description');
    		$description->setLabel('Description')
    			        ->setRequired(true)
    			        ->addFilter('StringTrim')
    					->addValidator($validatorarea)
    			        ->addValidator('NotEmpty');
     
    		//$enable = new Zend_Form_Element_Text('enable');
    		//$enable->setLabel('Cochez si actif');
     
     
    	    $enable = new Zend_Form_Element_Checkbox('enable');
    		$enable->setLabel('Cochez si actif');
     
    		$ajouter = new Zend_Form_Element_Submit('Ajouter');
    		$ajouter->setAttrib('id', 'ajouter');
    		$this->addElements(array($idservice,$service,$description,$enable,$ajouter));
    	}
    }
    merci d'avance pour votre aide.


    Cordialement,

  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
    La notice te dit qu'il n'y a pas d'index id dans la variable $service
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><a href="<?php echo $this->url(array('controller'=> 'configuration','action'=>'modifierservice','id'=>$service['id']), null, true); ?>">Modifier</a>
    Verifier le contenu de ta variable
    A la recherche d'un film : http://chercher-un-film.com

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2012
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 118
    Points : 52
    Points
    52
    Par défaut
    merci beaucoup, mais en fait j'avais pas fait attention, dans ma fonction d'affichage je n'avais pas défini mon id.


    merci pour tout.

    Cordialement,

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

Discussions similaires

  1. Problème update
    Par elhani dans le forum Langage SQL
    Réponses: 1
    Dernier message: 18/08/2005, 12h30
  2. Problème UPDATE et LIKE
    Par Golork dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/08/2005, 16h01
  3. Problème pour changer la forme du curseur
    Par Amara dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 18/05/2005, 11h37
  4. [Update]Problème update Eclipse
    Par tomate dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 05/04/2005, 11h14
  5. Problème UPDATE
    Par Eltaz dans le forum Langage SQL
    Réponses: 7
    Dernier message: 06/07/2004, 11h37

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