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:SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'intitule' cannot be null
La vue:
Le formulaire dans mon contrôleur:Code:
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:
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:
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!