Bonjour,
Voilà j'ai une vue avec un formulaire, qui a son exécution me donne l'erreur suivante:
Mais je n'ai pas du tout de colonne "intitule" dans mon formulaire, qui ne me sert qu'a envoyé un mail et ne remplit pas du tout ma base de donnée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'intitule' cannot be null
La vue:
Le formulaire dans mon contrôleur:
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 <form id="formTarifs" method="post" action="<?php echo $this->baseUrl(); ?>/?link=tarifs2#form" name="formulaire" class="form"> <?php /* Messages d'erreur du formulaire*/ echo $this->partial('index/messenger.phtml',array( 'prepend' => 'Le formulaire n\'a pas été envoyé, merci de vérifier les points suivant :', 'erreurs' => $this->erreurs )); ?> <a name="form"></a> <table style="margin-left:8px; margin-top:-5px "> <tr ><td><label for="societe">Société * </label></td> <td> <?php echo $this->formulaire['societe']['element']; ?> </td> </tr> <tr class="noprint"><td><label for="nom">Nom * </label></td> <td> <?php echo $this->formulaire['nom']['element']; ?> </td> </tr> <tr ><td><label for="nom">Prénom </label></td> <td> <?php echo $this->formulaire['prenom']['element']; ?> </td> </tr> <tr ><td><label for="email">E-mail * </label></td> <td> <?php echo $this->formulaire['email']['element']; ?> </td> </tr> <tr><td><label for="tel">Tel. * </label></td> <td> <?php echo $this->formulaire['telephone']['element']; ?><br /> <span class="noprint">* Champs obligatoires</span> </td> </tr> <tr><td><br /><label for="message">Message * </label></td> <td><br /> <?php echo $this->formulaire['message']['element']; ?> </td> </tr> <tr> <td></td> <td><?php echo $this->formulaire['submit']['element']; ?></td> </tr> </table> </form>
et mon contrôleur:
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 protected function getFormTarifContact (){ //*** Params du formulaire $form = new Zend_Form(); $form->setMethod('post'); // Destinataires $elt_dest = $form->createElement('select','destinataire') ->setLabel('Destinataire') ->addMultiOptions(array('commercial'=>'Service Commercial','technique'=>'Service Technique','communication'=>'Service Communication','tempo'=>'Client Tempo')); $form->addElement($elt_dest); //Société $elt_societe = $form->createElement('text', 'societe') ->setLabel('Société* :') ->setRequired(true) ->setAttrib('style','width: 225px') ->addValidator('NotEmpty', true, array( 'messages' => array( 'isEmpty' => "Donnée manquante : Société"))); $form->addElement($elt_societe); // Nom $elt_nom = $form->createElement('text', 'nom') ->setLabel('Nom* :') ->setRequired(true) ->setAttrib('style','width: 225px') ->addValidator('NotEmpty', true, array( 'messages' => array( 'isEmpty' => "Donnée manquante : Nom"))); $form->addElement($elt_nom); // Prénom $elt_prenom = $form->createElement('text', 'prenom') ->setAttrib('style','width: 225px') ->setLabel('Prénom :'); $form->addElement($elt_prenom); // Email $mailValidator = new Zend_Validate_EmailAddress(); $mailValidator->setMessages( array( Zend_Validate_EmailAddress::INVALID => 'Adresse mail invalide', Zend_Validate_EmailAddress::INVALID_HOSTNAME => 'Adresse mail invalide', Zend_Validate_EmailAddress::INVALID_MX_RECORD => 'Adresse mail invalide', Zend_Validate_EmailAddress::DOT_ATOM => 'Adresse mail invalide', Zend_Validate_EmailAddress::QUOTED_STRING => 'Adresse mail invalide', Zend_Validate_EmailAddress::INVALID_LOCAL_PART => 'Adresse mail invalide', )); $elt_email = $form->createElement('text', 'email') ->setLabel('Votre e-mail* : ') ->setAttrib('style','width: 225px') ->addValidator($mailValidator) ->setRequired(true) ->addValidator('NotEmpty', true, array( 'messages' => array( 'isEmpty' => "Donnée manquante : email"))); $form->addElement($elt_email); // Téléphone $elt_telephone = $form->createElement('text', 'telephone') ->setLabel('Téléphone* : ') ->setAttrib('style','width: 225px') ->setRequired(true) ->addValidator('NotEmpty', true, array( 'messages' => array( 'isEmpty' => "Donnée manquante : téléphone"))); $form->addElement($elt_telephone); // Message $elt_message = $form->createElement('textarea', 'message') ->setLabel('Votre message : ') ->setAttrib('rows','4') ->setAttrib('cols','50') ->setAttrib('style','width: 225px;margin-left: 5px;height: 5em;') ->setRequired(true) ->addValidator('NotEmpty', true, array( 'messages' => array( 'isEmpty' => "Donnée manquante : message"))); $form->addElement($elt_message); // Hidden fields to get the simulation values (SM: 13/02/2009) $simulationRan = $form->createElement('hidden','simulationRan'); $form->addElement($simulationRan); $nbAgencies = $form->createElement('hidden','nbAgencies'); $form->addElement($nbAgencies); $nbOffers = $form->createElement('hidden','nbOffers'); $form->addElement($nbOffers); $nbSites = $form->createElement('hidden','nbSites'); $form->addElement($nbSites); $nbEnseignes = $form->createElement('hidden','nbEnseignes'); $form->addElement($nbEnseignes); $optWeb = $form->createElement('hidden','optWeb'); $form->addElement($optWeb); $optLink = $form->createElement('hidden','optLink'); $form->addElement($optLink); //*** Submit $elt_submit = $form->createElement('submit','submit') ->setLabel('Valider') ->setAttrib('style','width: 230px;margin-left: 5px;margin-bottom: 3em;') ->setIgnore(true); // permet de ne pas le prendre en compte lors de l'update sinon affichage du message "Unknown column 'submit' in 'field list'" $form->addElement($elt_submit); $form->setElementDecorators(array( array('ViewHelper') // affiche uniquement l'élément du formulaire sans les messages d'erreurs )); // Echappe les espaces en début de saisie $form->setElementFilters(array('StringTrim')); return $form; }
Je ne vois pas du tout ça peut venir.
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 public function tarifs2Action() { $this->_helper->layout->setLayout('accueil'); $this->view->headLink()->appendStylesheet(PUBLIC_PATH . 'js/jquery/ui/old/themes/default/ui.all.css'); $this->view->headLink()->appendStylesheet(DEFAULT_SKIN_PATH . 'styles/tarifs2.css'); $this->view->headLink()->appendStylesheet(DEFAULT_SKIN_PATH . 'styles/recherches.css'); $this->view->headLink()->appendStylesheet(DEFAULT_SKIN_PATH . 'styles/tarifs-print.css','print'); $this->view->headLink()->appendStylesheet(DEFAULT_SKIN_PATH . "styles/style.css"); //Instancie le formulaire $form = $this->getFormTarifContact(); //Vérifie qu'on envoie les infos par POST if ($this->_request->isPost()) { //Récupération des données $formData = $this->_request->getPost(); print_r($formData); // exit; //Vérifie la validité des données if ($form->isValid($formData)) { //Essaie d'envoie du mail à l'agence try{ //Extrait les valeurs du formulaire et ajoute un prefix aux variables extract($form->getValues(),EXTR_PREFIX_ALL,'p'); // Défini les séparateur en fonction du type de mail (txt/html) $txtArray = array( $p_prenom . " " . $p_nom . ",", 'Email : ' . $p_email , 'Téléphone : ' . $p_telephone, '\n' ); if ($p_simulationRan) { $txtArray2 = array( 'Ayant fait la simulation suivante: ', 'Nombre d\'enseignes: ' . $_nbEnseignes, 'Nombre d\'agences: ' . $p_nbAgencies, 'Nombre d\'offres totales: ' . $p_nbOffers, 'Nombre de sites à lier: ' . $p_nbSites, //'Option minisite: ' . ($p_optWeb ? 'sélectionnée' : 'ignorée'), //'Option lien vers votre site: ' . ($p_optLink ? 'sélectionnée' : 'ignorée'), '\n' ); $txtArray = array_merge($txtArray,$txtArray2); } $txtArray3 = array( 'Vous adresse le message suivant : ', $p_message, '', "______________________________________________________________________", "Ce message vous est adressé à partir du site ".SITE_DOMAIN ); $txtArray = array_merge($txtArray,$txtArray3); $msgHtml = nl2br(implode('<br />',$txtArray)); $msgTxt = implode('\r\n',$txtArray); $mail = new Pi_Mail(); $mail->setBodyText($msgTxt); $mail->setBodyHtml($msgHtml); $mail->setFrom($p_email, $p_prenom . ' ' . $p_nom); $mail->addTo('support@'.SITE_DOMAIN); $mail->setSubject('['.SITE_DOMAIN.'] Contact tarifs'); if($mail->send()){ $this->_helper->viewRenderer->setNoRender(); echo "<div style='background: #fff;padding: 1em;'>Votre message est envoyé. Nous vous contacterons dès réception de celui-ci.<br />Vous allez être redirigé en page d'accueil dans 3 secondes.</div>"; $this->getResponse()->setRawHeader('Refresh:3; url=' . SITE_ABS_URL); } else { throw new Exception("Impossible d'envoyer l'email"); } } catch (Exception $e) { foreach ($e->getMessage() as $item => $v) { foreach ($v as $error ){ $this->view->erreurs[] = $error; } } } } else { //Récupère les erreurs et préremplie le formulaire $this->view->erreurs = array(); $form->setDefaults($formData); foreach ($form->getMessages() as $item => $v) { foreach ($v as $error ){ $this->view->erreurs[] = $error; } } } } $this->view->formulaire = $this->_helper->getFormModeWrite($form); }
Merci d'avance pour votre aide!
Partager