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 :

pb requete update zf 1.11 error application


Sujet :

Zend_Db 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 pb requete update zf 1.11 error application
    Bonjour,

    je viens vers vous à cause d'une erreur an error occured, application error.

    Je par d'un tableau d'affichage de tous mes résultat. quand je clique sur le bouton modifier, celui renvoie sur un from pré-remplie. Jusque la tout va bien.

    Dès lors que je modifie et valide cela me fait une erreur. Je pense donc que cela vient d'une de mes requêtes que je pensais bonne.

    Pourriez vous m'aider s'il vous plaît?

    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
     
    public function find($idservice, $service)
    	{
    		$select = $this->select()
    				->setIntegrityCheck(false)
    				->from(array('s' => 'service'),
    					   array('id'))
    				->where('id = ?', 'id');
    		$rowSet = $this->fetchAll($select);
    		$idservice = $rowSet->current();
     
     
    	}
    	public function updateService($data)
    	{
    	     $data = array(
        	'name'      => $service,
    		);
     
    		$this->update($data, array('id = ?', $idservice));
     
    	}
    mon controller :


    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
     
    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->find($idservice, $service);
                    $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->updateService($formData);
                    $this->_redirect('/');
                } else {
                    $form->populate($formData);
                }
            } else {
     
                $id = (int)$this->_request->getParam('id', 0);
                if ($id > 0) {
                    $service = new Application_Model_DbTable_Service();
                    $service = $service->fetchRow('id='.$id);
                    $form->populate($service->toArray());
                }
            }
    et mon form:

    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
     
    $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 à 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_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));
    	}
    Je vous remercie d'avance de votre aide.

    Bien 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
    Dans ta fonctions update
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public function updateService($data)
    	{
    	     $data = array(
        	'name'      => $service,
    		);
     
    		$this->update($data, array('id = ?', $idservice));
     
    	}
    tu travail avec 2 variables $service et $idservice qui ne sont pas déclaré, dans ta fonction updateService tu dois faire entrer les 2 variables à la place de $data
    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
    bonjour m4riachi,

    tout d'abord un grand merci pour ta réponse.

    j'ai tenté de faire cela, mais je t'avoue je bloque.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    $data = array(
    		'id' => $idservice,
        	'name' => $service,
    		'link_description' => $description,
    		'enable' => $enable
    		);
     
    		$this->update($data, array('id=' . $idservice));
    merci infiniment pour l'aide apportée.

    bien cordialement,

  4. #4
    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
    en fait je dois pouvoir modifier les champs suivants :

    'name', 'link_description', et 'enable'.

    Merci d'avance.

  5. #5
    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
    dans la base de données en elle-même, l'id de la table service est transféré à la table device_service. J'ai déclaré la clé étrangère en update et delete cascade.
    J'ai lu dans la doc de zend que si on déclare tout dans la base de données il est inutile de redéclarer dans les classe db_table (du genre $_dependentTables et $_referenceMap).

    merci d'avance.

    Bien cordialement,

  6. #6
    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
    Pour pouvoir utilisé des variables dans une fonction tu doit les faire entré dans la fonction.
    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 updateService($idservice, $service, $description, $enable)
    	{
    	    $data = array(
    		'id' => $idservice,
        	'name' => $service,
    		'link_description' => $description,
    		'enable' => $enable
    		);
     
    		$this->update($data, array('id=' . $idservice));
     
    	}
    A la recherche d'un film : http://chercher-un-film.com

  7. #7
    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
    j'avais fait ce bout de code mais je l'ai changé car cela plantait, j'ai remis à nouveau ce code, cela plante toujours mais du coup cela vient du controller.

    voici le controller:


    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
     
    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)) {
    				$db = Zend_Db_Table::getDefaultAdapter();
    			    $db->beginTransaction();
    				$service = new Application_Model_DbTable_Service();
    				$idservice = (int)$form->getValue('id');
    				$row = $service->fetchRow('id='.$idservice);
                    $row->name = $form->getValue('name');
                    $row->link_description = $form->getValue('link_description');
    				$row->enable = $form->getValue('enable');
    				$row->updateService($idservice,$service,$description,$enable);
    				$db->commit();
    				$this->_redirect('http://6.0.0.40/WebMRL/public/index.php/configuration/consulterunservice');
                } else {
                    $form->populate($formData);
                }
            }else {
               //partie bonne
                $idservice = (int)$this->_request->getParam('id', 0);
    			if ($idservice > 0) {
    				$service = new Application_Model_DbTable_Service();
    				$services = $service->fetchRow('id='.$idservice);
    				$form->populate($services->toArray());
    			}
            }
    merci d'avance.

    Cordialement,

  8. #8
    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 infiniment m4riachi, cela fonctionne du coup cela m'a ouvert les yeux sur mon controller.
    Je met le code suivant si cela peu aider des gens.

    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
     
    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)) {
    				$db = Zend_Db_Table::getDefaultAdapter();
    			    $db->beginTransaction();
    				try{
    					$service = new Application_Model_DbTable_Service();
    					$idservice = (int)$form->getValue('id');
    					$row = $service->fetchRow('id='.$idservice);
    					$row->name = $form->getValue('name');
    					$row->link_description = $form->getValue('link_description');
    					$row->enable = $form->getValue('enable');
    					$modif = $service->updateService($idservice,$row->name,$row->link_description,$row->enable);
    					$db->commit();
    				}catch (Exception $e)
    				{
    					$db->rollBack();
    					throw $e;
    				}
    				$this->_redirect('http://6.0.0.40/WebMRL/public/index.php/configuration/consulterunservice');
                } else {
                    $form->populate($formData);
                }
            }else {
               //Populate du formulaire
                $idservice = (int)$this->_request->getParam('id', 0);
    			if ($idservice > 0) {
    				$service = new Application_Model_DbTable_Service();
    				$services = $service->fetchRow('id='.$idservice);
    				$form->populate($services->toArray());
    			}
            }
    Bien cordialement,

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

Discussions similaires

  1. error 3035 : limit exceeded et requete update en vba.
    Par lukebalthazar dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 25/06/2014, 10h36
  2. [SYBASE] optimisation requete UPDATE
    Par metheorn dans le forum Sybase
    Réponses: 8
    Dernier message: 24/05/2004, 17h01
  3. [version] Requete Update avec différentes versions de mySQL
    Par regbegpower dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/01/2004, 17h19
  4. Requete update
    Par gianfare dans le forum Langage SQL
    Réponses: 7
    Dernier message: 10/10/2003, 09h04
  5. [debutante] erreur requete update
    Par LineLe dans le forum ASP
    Réponses: 5
    Dernier message: 12/09/2003, 13h05

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