Bonjour,
Je rencontre un problème lors de l'envoi de mail, concernant au champ de type Datetime. J'en saisi la teneur mais je ne parviens pas à trouver où peut se situer le problème.
Je vous donne ici les erreurs retournées et les codes associés.
Erreur lors de l'envoi au fournisseur :
Fatal error: Uncaught PDOException: SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '0' for column 'emailOK_fou' at row 1 in C:\wamp64\www\INTRANET\SAV\envoi_mail_fou.php on line 197Lors de l'envoi à l'adhérent :
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200 <?php include('../inc/config.php'); require "../inc/PHPMailer/src/PHPMailer.php"; // On inclut le dossier phpmailer require "../inc/PHPMailer/src/SMTP.php"; // On inclut le dossier phpmailer require "../inc/PHPMailer/src/Exception.php"; // On inclut le dossier phpmailer session_start(); $prenom = "Pamela"; //Essaye de récupérer la connexion à MySql try { $mysql = new PDO(MYSQL_DSN, MYSQL_USER, MYSQL_PASS); $mysql->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $mysql->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); } catch (PDOException $e) { echo 'Connexion échouée : ' . $e->getMessage(); } $mysql->query("SET NAMES UTF8"); $commentaire = ''; if (!(isset($_GET['id']))) { // On teste si il y a un id passé en GET ?> ERREUR : Aucun numero de sav précisé. <?php exit; } else { $id_sav = $_GET['id']; // On recupère l'id passé en GET } $res = $mysql->query("SELECT * FROM sav WHERE id = '$id_sav'"); while ($row = $res->fetch()) { // On recupère les valeurs de l'id passé en parametre dans la table SAV $datecreation = $row['date_creation']; $createur = $row['createur']; $artisan = $row['artisan']; $fournisseur = $row['fournisseur']; $mail_fou = $row['mail_fou']; // Adresse mail du fournisseur de ce SAV $reference = $row['reference']; $cout = $row['cout']; $probleme = $row['probleme']; $evolution = $row['evolution']; switch($evolution) { // On donne un état a chaque cas case 1: $evolution = 'En cours'; break ; case 2: $evolution = 'Cloturé'; break ; } $emailOK_fou = $row['emailOK_fou']; } $res1 = $mysql->query("SELECT prenom, nom, email FROM employe WHERE ip='$_SERVER[REMOTE_ADDR]' AND printer=0 "); while ($row1 = $res1->fetch()) { $nom = $row1['nom']; $prenom = $row1['prenom']; $email = $row1['email']; } if($prenom == null){ $prenom="Pamela";} // On recupere le numero de l'adhérent dans la table artisan $result = $mysql->query("SELECT numero FROM artisan JOIN sav ON artisan.nom = sav.artisan WHERE artisan.nom = \"$artisan\""); while ($row2 = $result->fetch()) { $id_adh = $row2['numero']; } // On selectionne les commentaires en faisant une jointure avec sav_commentaire sur id du SAV $resultat = $mysql->query("SELECT commentaire FROM sav_commentairef JOIN sav ON sav_commentairef.id_sav = sav.id WHERE id_sav = '$id_sav'"); while ($row3 = $resultat->fetch()) { $commentaire = $row3['commentaire']; } $signature= " <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"> <HTML> <HEAD> <TITLE>SignatureEmailCOPAB</TITLE> <META content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\"> </HEAD> <TABLE border=\"2px\" width=\"420px\" rules=\"none\" bordercolor=\"#004664\"> <TR> <TD colspan=3 style=\"color:#004664; line-height:8pt; font-family:Arial, sans-serif; font-size:12pt; font-weight:bold; padding-top:10; text-align:center\">$prenom $nom</TD> </TR> <TR> <TD colspan=3 style=\"color:#82AA37; line-height:8pt; font-family:Arial, sans-serif; font-size:12pt; font-weight:bold; text-align:center\">Menuiserie extérieure</TD> </TR> <TR> <TD colspan=3 style=\"text-align:center; padding-top:10\"><a href=\"mailto:$email \" style=\"color:#82AA37; line-height:8pt; font-family:Arial, sans-serif; font-size:12pt; text-decoration:none\">$email</a></td> </TR> <TR> <TD colspan=3 style=\"color:#004664; line-height:8pt; font-family:Arial, sans-serif; font-weight:bold; font-size:8pt; text-align:center; padding-top:10; padding-bottom:10\">Tél. : +33 2 22 25 11 93 - Fax : +33 2 98 73 23 43</td> </TR> <TR> <TD style=\"padding-left:10\"><img src=\"http://www.copab.fr/SignaturesMail/Images/logo_COPAB.png\" height=30></TD> <TD style=\"padding-left:15\"><img src=\"http://www.copab.fr/SignaturesMail/Images/ARCA.png\" height=35></TD> <TD ><a href=\"http://www.artipole.fr\" target=\"blank\"><img style=\"padding-left:15; padding-bottom:5\" src=\"http://www.copab.fr/SignaturesMail/Images/Artipole.png\" height=30></img></a></td> </TR> </TABLE> "; if ($cout == '0') $cout = "gratuit"; if ($cout == '1') $cout = "payant"; // Le message en HTML $html = " Concernant l'adhérent <b>$artisan</b><br> <u>Suivi du SAV :</u><br> $commentaire <br> <u>Reference :</u> $reference<br><br> <u>Fournisseur :</u> <b>$fournisseur</b><br><br> <b>A titre $cout </b><br><br> <u>Nature du problème</u> :<br> $probleme<br> cordialement <br> <br> $signature <br> "; $mail = new PHPMailer\PHPMailer\PHPMailer(); $mail->IsSMTP(); $mail->SMTPDebug = 0; $mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) ); $mail->CharSet="UTF-8"; //$mail->CharSet = 'UTF-8'; // On encode en UTF-8 $mail->SMTPAuth = true; $mail->SMTPSecure = "ssl"; $mail->Port = SMTP_PORT; // On utilise les constantes dans inc/config.php pour le password, l'user, le port et le serveur $mail->Host = SMTP_SERVEUR; $mail->Username = SMTP_USER; $mail->Password = SMTP_PASS; $mail->IsHTML(true); $mail->SetFrom("copab.men.ext@gmail.com","COPAB"); // Adresse mail utilisée $mail->AddEmbeddedImage('gfx/'.$prenom.'.png','signature','signature.png'); $mail->AddAddress($mail_fou); // Le mail est celui qui est dans la table sav //$mail->AddEmbeddedImage('gfx/'.$prenom.'.png', 'signature','signature.png'); /* Création du dossier old (copy ne marche pas sans)*/ $newfilename = "files/$id_sav/fournisseur/old"; if (file_exists($newfilename)) { chmod($newfilename, 777); } else { mkdir($newfilename, 777,true); } $src = "files/$id_sav/fournisseur"; //chemin des fichiers uploadé /* Ajout des pièces jointes */ foreach (glob("files/$id_sav/fournisseur/*") as $filename) { // Liste les fichiers dans ce dossier if ($filename <> "files/$id_sav/fournisseur/Thumbs.db") { // Si le fichier est différent de 'Thumbs.db $mail->addAttachment($filename); // On attache chaque fichier comme pièces jointes } } $mail->Subject = "COPAB : Demande de SAV n°$id_sav Ref : $reference"; // Sujet du mail avec l'id du SAV, la référence et l'état (A traiter, En cours, Cloturé) $mail->Body = $html; if (!$mail->send()) { echo 'Mailer Error: ' . $mail->ErrorInfo; $sql = "UPDATE sav SET emailOK_fou = 00-00-0000 WHERE id = $id_sav"; // Si pas envoyé, emailOK_fou reste a NULL } else { echo 'Envoi de mail reussi<br>'; $sql = "UPDATE sav SET emailOK_fou = NOW() WHERE id = $id_sav"; // Si envoyé, emailOK_fou est mis a NOW() } /*Archivage*/ foreach (glob("files/$id_sav/fournisseur/*.*") as $filename) { if ($filename <> "files/$id_sav/fournisseur/Thumbs.db") { // Si le fichier est différent de 'Thumbs.db' $file_to_go = str_replace($src,$newfilename,$filename); copy("$filename", "$file_to_go" ); // on copie les fichiers vers le dossier old unlink ("$filename"); //suppresion des fichiers en racine } } $mysql->query($sql) ; // On execute la requete SQL après le test d'emailOK ?> <br> <button value="Retour" title="retour" onclick="javascript:document.location.href='historique_sav.php';">Retour a l'historique</button> <!-- Boutton qui retourne sur historique_sav.php pour garder les filtres activés -->
Fatal error: Uncaught PDOException: SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '0' for column 'emailOK' at row 1 in C:\wamp64\www\INTRANET\SAV\envoi_mail_adh.php on line 187J'ai tenté de passer une valeur null mais toujours une erreur.
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189 <?php include('../inc/config.php'); require "../inc/PHPMailer/src/PHPMailer.php"; // On inclut le dossier phpmailer require "../inc/PHPMailer/src/SMTP.php"; // On inclut le dossier phpmailer require "../inc/PHPMailer/src/Exception.php"; // On inclut le dossier phpmailer session_start(); $prenom = "Pamela"; //Essaye de récupérer la connexion à MySql try { $mysql = new PDO(MYSQL_DSN, MYSQL_USER, MYSQL_PASS); $mysql->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $mysql->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); } catch (PDOException $e) { echo 'Connexion échouée : ' . $e->getMessage(); } $mysql->query("SET NAMES UTF8"); $commentaire = ''; if (!(isset($_GET['id']))) { // On teste si il y a un id passé en GET ?> ERREUR : Aucun numero de sav précisé. <?php exit; } else { $id_sav = $_GET['id']; // On recupère l'id passé en GET } $res = $mysql->query("SELECT * FROM sav WHERE id = '$id_sav'") ; while ($row = $res->fetch()) { // On recupère les valeurs de l'id passé en parametre dans la table SAV $datecreation = $row['date_creation']; $createur = $row['createur']; $artisan = $row['artisan']; $mail_adh = $row['mail_adh']; // Adresse mail de l'adhérent de ce SAV $fournisseur = $row['fournisseur']; $reference = $row['reference']; $probleme = $row['probleme']; $evolution = $row['evolution']; switch($evolution) { // On donne un état à chaque cas case 1: $evolution = 'En cours'; break ; case 2: $evolution = 'Cloturé'; break ; } $emailOK = $row['emailOK']; } $res1 = $mysql->query("SELECT prenom, nom, email FROM employe WHERE ip='$_SERVER[REMOTE_ADDR]' AND printer=0 "); while ($row1 = $res1->fetch()) { $nom = $row1['nom']; $prenom = $row1['prenom']; $email = $row1['email']; } if($prenom == null){ $prenom="Pamela";} // On selectionne les commentaires en faisant une jointure avec sav_commentaire sur id du SAV $resultat = $mysql->query("SELECT commentaire FROM sav_commentaire JOIN sav ON sav_commentaire.id_sav = sav.id WHERE id_sav = '$id_sav'") ; while ($row3 = $resultat->fetch()) { $commentaire = $row3['commentaire']; } $signature= " <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"> <HTML> <HEAD> <TITLE>SignatureEmailCOPAB</TITLE> <META content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\"> </HEAD> <TABLE border=\"2px\" width=\"420px\" rules=\"none\" bordercolor=\"#004664\"> <TR> <TD colspan=3 style=\"color:#004664; line-height:8pt; font-family:Arial, sans-serif; font-size:12pt; font-weight:bold; padding-top:10; text-align:center\">$prenom $nom</TD> </TR> <TR> <TD colspan=3 style=\"color:#82AA37; line-height:8pt; font-family:Arial, sans-serif; font-size:12pt; font-weight:bold; text-align:center\">Menuiserie extérieure</TD> </TR> <TR> <TD colspan=3 style=\"text-align:center; padding-top:10\"><a href=\"mailto:$email \" style=\"color:#82AA37; line-height:8pt; font-family:Arial, sans-serif; font-size:12pt; text-decoration:none\">$email</a></td> </TR> <TR> <TD colspan=3 style=\"color:#004664; line-height:8pt; font-family:Arial, sans-serif; font-weight:bold; font-size:8pt; text-align:center; padding-top:10; padding-bottom:10\">Tél. : +33 2 22 25 11 93 - Fax : +33 2 98 73 23 43</td> </TR> <TR> <TD style=\"padding-left:10\"><img src=\"http://www.copab.fr/SignaturesMail/Images/logo_COPAB.png\" height=30></TD> <TD style=\"padding-left:15\"><img src=\"http://www.copab.fr/SignaturesMail/Images/ARCA.png\" height=35></TD> <TD ><a href=\"http://www.artipole.fr\" target=\"blank\"><img style=\"padding-left:15; padding-bottom:5\" src=\"http://www.copab.fr/SignaturesMail/Images/Artipole.png\" height=30></img></a></td> </TR> </TABLE> "; // Le message en HTML $html = " Concernant l'adhérent <b>$artisan</b><br> <u>Suivi du SAV :</u><br> $commentaire <br> <u>Reference :</u> $reference<br><br> <u>Fournisseur :</u> <b>$fournisseur</b><br><br> <u>Nature du problème</u> :<br> $probleme<br> cordialement <br><br> $signature "; $mail = new PHPMailer\PHPMailer\PHPMailer(); $mail->IsSMTP(); $mail->SMTPDebug = 0; $mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) ); $mail->CharSet="UTF-8"; $mail->SMTPAuth = true; $mail->SMTPSecure = "ssl"; $mail->Port = SMTP_PORT; // On utilise les constantes dans inc/config.php pour le password, l'user, le port et le serveur $mail->Host = SMTP_SERVEUR; $mail->Username = SMTP_USER; $mail->Password = SMTP_PASS; $mail->IsHTML(true); $mail->SetFrom("copab.men.ext@gmail.com","COPAB"); // Adresse mail utilisée $mail->AddEmbeddedImage('gfx/'.$prenom.'.png','signature','signature.png'); $mail->AddAddress($mail_adh); // Le mail est celui qui est dans la table artisan /* Création du dossier old (copy ne marche pas sans)*/ $newfilename = "files/$id_sav/adherent/old"; if (file_exists($newfilename)) { chmod($newfilename, 777); } else { mkdir($newfilename, 777,true); } $src = "files/$id_sav/adherent"; //chemin des fichiers uploadé /* Ajout des pièces jointes */ foreach (glob("files/$id_sav/adherent/*") as $filename) { // Liste les fichiers dans ce dossier if ($filename <> "files/$id_sav/adherent/Thumbs.db") { // Si le fichier est différent de 'Thumbs.db' $mail->AddAttachment($filename); // On attache chaque fichier comme pièces jointes } } $mail->Subject = "Votre demande N°$id_sav Ref : $reference"; // Sujet du mail avec l'id du SAV, la référence et l'état (A traiter, En cours, Cloturé) $mail->Body = $html; if (!$mail->send()) { echo "Erreur envoi mail" . $mail->ErrorInfo;; $sql = "UPDATE sav SET emailOK = 00-00-0000 WHERE id = $id_sav"; //$sql = "UPDATE sav SET emailOK = NULL WHERE id = $id_sav"; // Si le mail n'est pas envoyé, emailOK reste a 0 //echo $emailOK; } else { echo "Envoi de mail reussi<br>"; $sql = "UPDATE sav SET emailOK = NOW() WHERE id = $id_sav"; // Si le mail est envoyé, on met emailOK a NOW() grace a un UPDATE } /*Archivage*/ foreach (glob("files/$id_sav/adherent/*.*") as $filename) { if ($filename <> "files/$id_sav/adherent/Thumbs.db") { // Si le fichier est différent de 'Thumbs.db' $file_to_go = str_replace($src,$newfilename,$filename); copy("$filename", "$file_to_go" ); // on copie les fichiers vers le dossier old unlink ("$filename"); //suppresion des fichiers en racine } } $mysql->query($sql); ?> <br> <button value="Retour" title="retour" onclick="javascript:document.location.href='historique_sav.php';">Retour a l'historique</button> <!-- Boutton qui retourne sur historique_sav.php pour garder les filtres activés -->
Je me demande si cela ne viendrait pas de la structure des champs, bien que tout me semble correcte. Je vous mets une capture de la structure des champs concernés.
Merci d'avance et celles et ceux qui voudront bien se pencher sur mon problème.
Partager