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 :

Problème avec base de données (débutant)


Sujet :

Zend_Db PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2014
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Problème avec base de données (débutant)
    Bonsoir à tous, je suis encore débutant en zend bien que je progresse rapidement, je bloque sur une erreur. J'ai suivi le tutoriel de Developpez.com et malheureusement j'ai une erreur du domaine SQL. Malgré le message d'erreur, il y a une insertion qui se passe bien dans ma table mais seulement l'id s'auto-incrémente et mes variables titre et description ne rentrent pas dans ma table. Je suis bloqué depuis deux jours sur cette erreur, je viens demander votre aide car je ne sais plus ou donner de la tête. Je vous remercie d'avance pour votre aide précieuse.

    Voici le message que j'ai

    Message: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'name' cannot be null

    Stack trace:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #0 C:\wamp\www\skateparks\library\Zend\Db\Statement.php(303): Zend_Db_Statement_Pdo->_execute(Array)
    #1 C:\wamp\www\skateparks\library\Zend\Db\Adapter\Abstract.php(480): Zend_Db_Statement->execute(Array)
    #2 C:\wamp\www\skateparks\library\Zend\Db\Adapter\Pdo\Abstract.php(238): Zend_Db_Adapter_Abstract->query('INSERT INTO `sk...', Array)
    #3 C:\wamp\www\skateparks\library\Zend\Db\Adapter\Abstract.php(576): Zend_Db_Adapter_Pdo_Abstract->query('INSERT INTO `sk...', Array)
    #4 C:\wamp\www\skateparks\library\Zend\Db\Table\Abstract.php(1076): Zend_Db_Adapter_Abstract->insert('skateparks', Array)
    #5 C:\wamp\www\skateparks\application\models\DbTable\Skateparks.php(23): Zend_Db_Table_Abstract->insert(Array)
    #6 C:\wamp\www\skateparks\application\controllers\SkateparksController.php(23): Application_Model_DbTable_Skateparks->ajouterSkateparks('juuyj', 'ujyujy')
    #7 C:\wamp\www\skateparks\library\Zend\Controller\Action.php(516): SkateparksController->ajouterAction()
    #8 C:\wamp\www\skateparks\library\Zend\Controller\Dispatcher\Standard.php(308): Zend_Controller_Action->dispatch('ajouterAction')
    #9 C:\wamp\www\skateparks\library\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
    #10 C:\wamp\www\skateparks\library\Zend\Application\Bootstrap\Bootstrap.php(97): Zend_Controller_Front->dispatch()
    #11 C:\wamp\www\skateparks\library\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
    #12 C:\wamp\www\skateparks\public\index.php(26): Zend_Application->run()
    #13 {main}
    Request Parameters:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    array (
      'controller' => 'skateparks',
      'action' => 'ajouter',
      'module' => 'default',
      'id' => '0',
      'name' => 'juuyj',
      'description' => 'ujyujy',
      'envoyer' => 'Ajouter',
    )
    J'ai vérifié milles fois mon controller, form et vue mais je trouve pas

    Voici 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
    <?php
     
    class SkateparksController extends Zend_Controller_Action
    {
        public function indexAction()
        {
             $skateparks = new Application_Model_DbTable_Skateparks();
            $this->view->skateparks = $skateparks->fetchAll();
        }
     
        function ajouterAction()
        {
            $form = new Application_Form_Skateparks();
            $form->envoyer->setLabel('Ajouter');
            $this->view->form = $form;
     
            if ($this->getRequest()->isPost()) {
                $formData = $this->getRequest()->getPost();
                if ($form->isValid($formData)) {
                    $name = $form->getValue('name');
                    $description = $form->getValue('description');
                    $skateparks = new Application_Model_DbTable_Skateparks();
                    $skateparks->ajouterSkateparks($name, $description);
     
                    $this->_helper->redirector('index');
                } else {
                    $form->populate($formData);
                }
            }
        }
     
    }
    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
    <?php
     
    class Application_Form_Skateparks extends Zend_Form
    {
        public function init()
        {
            $this->setName('skateparks');
     
            $id = new Zend_Form_Element_Hidden('id');
            $id->addFilter('Int');
     
            $name = new Zend_Form_Element_Text('name');
            $name->setLabel('Ville')
                    ->setRequired(true)
                    ->addFilter('StripTags')
                    ->addFilter('StringTrim');
     
            $description = new Zend_Form_Element_Text('description');
            $description->setLabel('Description')
                  ->setRequired(true)
                  ->addFilter('StripTags')
                  ->addFilter('StringTrim');
     
            $envoyer = new Zend_Form_Element_Submit('envoyer');
            $envoyer->setAttrib('id', 'boutonenvoyer');
     
            $this->addElements(array($id, $name, $description, $envoyer));
        }
    }
    Ma vue

    <?php

    class Application_Model_DbTable_Skateparks extends Zend_Db_Table_Abstract
    {
    protected $_name = 'skateparks';

    public function voirSkateparks($id)
    {
    $id = (int)$id;
    $row = $this->fetchRow('id = ' . $id);
    if (!$row) {
    throw new Exception("Impossible de trouver l'enregistrement $id");
    }
    return $row->toArray();
    }

    public function ajouterSkateparks($name, $description)
    {
    $data = array(
    'name' => $name,
    'description' => $description,
    );
    $this->insert($data);
    }

    public function modifierSkateparks($id, $name, $description)
    {
    $data = array(
    'name' => $name,
    'description' => $description,
    );
    $this->update($data, 'id = '. (int)$id);
    }

    public function supprimerSkateparks($id)
    {
    $this->delete('id =' . (int)$id);
    }
    }


    Je sais pas trop ou ça bloque. je compte sur vous Bonne soirée.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    bonjour,

    avant d'ajouter en bd, assure toi que tu reçois bien les données après validation en faisant un débogage:

    Code php : 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
     
        function ajouterAction()
        {
            $form = new Application_Form_Skateparks();
            $form->envoyer->setLabel('Ajouter');
            $this->view->form = $form;
     
            if ($this->getRequest()->isPost()) {
                $formData = $this->getRequest()->getPost();
                if ($form->isValid($formData)) {
                    $name = $form->getValue('name');
                    $description = $form->getValue('description');
                   Zend_Debug::dump( $form->getValues() ); //!!!!!! que donne ce débogage?
                    $skateparks = new Application_Model_DbTable_Skateparks();
             //       $skateparks->ajouterSkateparks($name, $description);
     
                    $this->_helper->redirector('index');
                } else {
                    $form->populate($formData);
                }
            }
        }

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2014
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Salut armel18,

    tout d'abord merci pour ta réponse,
    ensuite j'ai essayé le debug mais j'ai pas l'impression que celui-ci fonctionne où sinon c'est que la variable envoyée ne contient peut être rien ?

    J'ai essayé:
    -Zend_Debug::dump( $form->getValues() );
    -Zend_Debug::dump( $form->getValue('name') );
    - Zend_Debug::dump( $form->getValue('descriptions') );

    Mais j'ai eu aucun message comme sur le bon vieux php avec le var_dump. Je sais pas d'où ça vient.

    Merci d'avance pour tes conseils et aides.

    Bonne soirée.

    PS: Si d'autres personnes voient d'où vient l'erreur, n'hésitez pas à réponde

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    commente cette redirection $this->_helper->redirector('index'); pour afficher le message de débogage de l'action ajout

    Code php : 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
     
     
        function ajouterAction()
        {
            $form = new Application_Form_Skateparks();
            $form->envoyer->setLabel('Ajouter');
            $this->view->form = $form;
     
            if ($this->getRequest()->isPost()) {
                $formData = $this->getRequest()->getPost();
                if ($form->isValid($formData)) {
                    $name = $form->getValue('name');
                    $description = $form->getValue('description');
                   Zend_Debug::dump( $form->getValues() ); //!!!!!! que donne ce débogage?
                    $skateparks = new Application_Model_DbTable_Skateparks();
             //       $skateparks->ajouterSkateparks($name, $description);
     
               //     $this->_helper->redirector('index');
                } else {
                    $form->populate($formData);
                }
            }
        }

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2014
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    merci pour ta réponse.

    Voici ce que me retourne le dump:

    'id' => int 0
    'name' => string 'kuik' (length=4)
    'description' => string 'kuiu' (length=4)

    J'ai l'impression que c'est peut être l'id qui pose problème. Qu'en penses tu?

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    Citation Envoyé par vincerasta Voir le message
    Bonjour,

    merci pour ta réponse.

    Voici ce que me retourne le dump:

    'id' => int 0
    'name' => string 'kuik' (length=4)
    'description' => string 'kuiu' (length=4)

    J'ai l'impression que c'est peut être l'id qui pose problème. Qu'en penses tu?
    non je pense pas car l'id n'a pas besoin d'être inseré il s'auto-incrémente déjà.

    En revanche le problème pourrait venir de la méthode ajouterSkateparks(). dans ce cas assure toi que les noms des colonnes renseignés(name et description) dans ta requête d'insertion correspondent à ceux des colonnes de la table.

    Toujours pour les besoins de débogage faudrait tester la méthode ajouterSkateparks() indépdement du formulaire par exemple tu peux la tester avec des données en dur dans n'importe quelle vue.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    //par exemple dans la vue index.phtml
                    $skateparks = new Application_Model_DbTable_Skateparks();
                   $skateparks->ajouterSkateparks("nom toto", "la description");

Discussions similaires

  1. Problème avec base de données oracle
    Par jonnyboy dans le forum Développement de jobs
    Réponses: 5
    Dernier message: 16/02/2010, 12h10
  2. Réponses: 1
    Dernier message: 19/02/2008, 23h05
  3. Plusieurs problèmes avec base de données
    Par mithrendil dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 17/01/2008, 16h23
  4. svp problème avec base de données
    Par midosone dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 26/03/2007, 10h45
  5. [MySQL] Problème avec base de données
    Par ThAOTh dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 10/08/2006, 13h42

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