Formulaire PHP : envoi par email + MySQL
I. Introduction au formulaire PHP par email + MySQL
Dans de précédents tutoriaux, vous avez vu comment envoyer les données d'un formulaire PHP dans une base de donnée MySQL, mais aussi comment s'envoyer ces mêmes données par email. Et cela respectivement avec les tutoriaux Faire un formulaire PHP, HTML, CSS (3 sur 3) et Formulaire PHP et envoi par email.
En lisant ces deux explications, vous devriez être capables de mixer les deux par vous même de façon à pouvoir envoyer les données d'un formulaire PHP à la fois dans une base de données MySQL mais aussi par email. Je ne vais donc pas répéter les explications du code PHP, mais uniquement vous donner le code pour réaliser les deux.
II. Explications
1. Formulaire PHP : envoi par email + MySQL
Voici donc le code complet pour combiner l'envoi du formulaire à la fois par email et dans MySQL.
Je vous l'ai commenté en gras pour que vous puissiez vous y retrouver au maximum.
<?php
// Parametres mysql à remplacer par les vôtres
define('DB_SERVER', 'localhost'); // serveur mysql
define('DB_SERVER_USERNAME', 'root'); // nom d'utilisateur
define('DB_SERVER_PASSWORD', 'motdepasse'); // mot de passe
define('DB_DATABASE', 'test'); // nom de la base
// parametres email à remplacer par les vôtes
define('MAIL_DESTINATAIRE','webmaster@6ma.fr'); // remplacer par votre email
define('MAIL_SUJET','Message du formulaire de example.com');
$msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement remplis :<br/><br/>";
$msg_ok = "Votre demande a bien été prise en compte.";
$message = $msg_erreur;
// Connexion au serveur mysql
$connect = mysql_connect(DB_SERVER, DB_SERVER_USERNAME,
DB_SERVER_PASSWORD)
or die('Impossible de se connecter : ' . mysql_error());
// sélection de la base de données
mysql_select_db(DB_DATABASE, $connect);
// vérification des champs
if (empty($_POST['civilite']))
$message .= "Votre civilité<br/>";
if (empty($_POST['nom']))
$message .= "Votre nom<br/>";
if (empty($_POST['adresse']))
$message .= "Votre adresse<br/>";
if (empty($_POST['codepostal']))
$message .= "Votre code postal<br/>";
if (empty($_POST['ville']))
$message .= "Votre ville<br/>";
if (empty($_POST['comments']))
$message .= "Votre message<br/>";
// si un champ est vide, on affiche le message d'erreur
if (strlen($message) > strlen($msg_erreur)) {
echo $message;
// sinon c'est ok
} else {
// on enleve les slashes et espace inutiles
foreach($_POST as $index => $valeur) {
$$index = stripslashes(trim($valeur));
}
// on liste les centre d'interets en ligne
$interets = $_POST['interets'];
$sqlinterets = '';
for ($i=0; $i<count($interets); $i++)
{
$sqlinterets .= $interets[$i];
$sqlinterets .= ', ';
}
//Préparation de l'entête du mail
$mail_entete = "MIME-Version: 1.0\r\n";
$mail_entete .= "From: {$_POST['nom']} "
."<{$_POST['email']}>\r\n";
$mail_entete .= 'Reply-To: '.$_POST['email']."\r\n";
$mail_entete .= 'Content-Type: text/plain; charset="iso-8859-1"';
$mail_entete .= "\r\nContent-Transfer-Encoding: 8bit\r\n";
$mail_entete .= 'X-Mailer:PHP/' . phpversion()."\r\n";
// préparation du corps du mail
$mail_corps = "Message de : $civilite $nom\n";
$mail_corps .= "Adresse : $adresse, $codepostal $ville, $pays\n";
$mail_corps .= "Ses centres d'intérêts : $sqlinterets\n\n\n";
$mail_corps .= $comments;
// envoi du mail
$res_mail = mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete);
foreach($_POST as $index => $valeur) {
// utilisez addslashes() au lieu de mysql_real_escape_string()
// si vous n'etes pas sur PHP5 ou si la fonction pose probleme
$$index = mysql_real_escape_string(trim($valeur));
}
// insere les donnees dans mysql
$sql = "INSERT INTO formulaire VALUES ('', '$civilite', '$nom', '$adresse', '$codepostal', '$ville', '$pays', '$sqlinterets', '$comments', now())";
$res_sql = mysql_query($sql);
// si le mail a ete envoye par mail et mysql
if ($res_mail && $res_sql) {
echo $msg_ok;
// si mysql a retourné une erreur
} else if (!$res_sql) {
echo mysql_error();
// si le mail n'a pas été envoyé
} else if (!$res_mail) {
echo 'Erreur. Le formulaire ne nous a pas été correctement envoyé par email.';
}
}
?>
III. Conclusion du tutorial
Voici donc pour le 5ème tutoriel que je vous réalise concernant les formulaires HTML, CSS, PHP. J'espère que ceux-ci vous auront appris pas mal de choses, et que les formulaires web n'ont maintenant plus de secrets pour vous ou presque.
Comme d'habitude, nous restons à votre disposition sur le forum pour toute question ou suggestion.
Ajouté le 25-01-2007
Lu 15032 fois
Tutoriel réalisé par :
Damien Desrousseaux
Pas de support par email, veuillez utiliser le forum informatique pour toute question.
Reproduction partielle ou totale interdite sans l'accord de l'auteur.




