Envoie de formulaire / php
Résolu
a.finot
Messages postés
74
Date d'inscription
Statut
Membre
Dernière intervention
-
le père -
le père -
Bonjour,
J'ai un formulaire de contact pour lequel je voudrai qu'il envoie à la fois les données dans ma base mysql et par mail. Les données sont bien envoyées dans ma base mais pas par mail. En fait je ne sais pas comment dire qu'il faut faire les 2 !
Ma fonction mail est dans un fichier php indépendant nomme "envoimail.php". Mon code insert to pour la base est dans le même fichier que mon formulaire parce que si je mets les 2 codes dans le même fichier mon mail n'est pas envoyé à l'activation du bouton submit mais directement à l'affichage de la page, donc sans données.
J'ai aussi un problème pour récupérer les données de mon formulaire dans le mail, mais ça je le règlerai après ;-)
Est-ce que quelqu'un peut m'aider svp ?!
Mon formulaire :
<form action="<?php echo $editFormAction; ?>" "envoimail.php" name="contacts" id="contacts" method="POST">
Ma fonction mail :
<?php
$email = GetSQLValueString($_POST['email']);
$headers ='From: "Site Internet"<$email>'."\n";
$headers .='Reply-To: <$email>'."\n";
$headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
$message ='<$email>,<$nom>,<$prenom>,<$email>,<$tel>,<$adresse>,<$cp>,<$ville>,<$pays>,<$index>,<$niveau>,souhaite s\'inscrire à la newsletter';
if (mail('a.finot@wanadoo.fr', 'Inscription newsletter', $message, $headers))
{
echo 'Le message a bien été envoyé';
}
else
{
echo 'Le message n\'a pu être envoyé';
}
?>
l'enregistrement dans ma base :
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "contacts")) {
$insertSQL = sprintf("INSERT INTO clients (ID, sexe, nom, prenom, email, tel, adresse, cp, ville, pays, `index`, niveau, offrespartenaires) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['ID'], "int"),
GetSQLValueString($_POST['sexe'], "text"),
GetSQLValueString($_POST['nom'], "text"),
GetSQLValueString($_POST['prenom'], "text"),
GetSQLValueString($_POST['email'], "text"),
GetSQLValueString($_POST['tel'], "text"),
GetSQLValueString($_POST['adresse'], "text"),
GetSQLValueString($_POST['cp'], "text"),
GetSQLValueString($_POST['ville'], "text"),
GetSQLValueString($_POST['pays'], "text"),
GetSQLValueString($_POST['index'], "text"),
GetSQLValueString($_POST['niveau'], "text"),
GetSQLValueString(isset($_POST['offrespartenaires']) ? "true" : "", "defined","'Y'","'N'"));
mysql_select_db($database_lcdvs, $lcdvs);
$Result1 = mysql_query($insertSQL, $lcdvs) or die(mysql_error());
$insertGoTo = "home.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
?>
Merci d'avance !
J'ai un formulaire de contact pour lequel je voudrai qu'il envoie à la fois les données dans ma base mysql et par mail. Les données sont bien envoyées dans ma base mais pas par mail. En fait je ne sais pas comment dire qu'il faut faire les 2 !
Ma fonction mail est dans un fichier php indépendant nomme "envoimail.php". Mon code insert to pour la base est dans le même fichier que mon formulaire parce que si je mets les 2 codes dans le même fichier mon mail n'est pas envoyé à l'activation du bouton submit mais directement à l'affichage de la page, donc sans données.
J'ai aussi un problème pour récupérer les données de mon formulaire dans le mail, mais ça je le règlerai après ;-)
Est-ce que quelqu'un peut m'aider svp ?!
Mon formulaire :
<form action="<?php echo $editFormAction; ?>" "envoimail.php" name="contacts" id="contacts" method="POST">
Ma fonction mail :
<?php
$email = GetSQLValueString($_POST['email']);
$headers ='From: "Site Internet"<$email>'."\n";
$headers .='Reply-To: <$email>'."\n";
$headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
$message ='<$email>,<$nom>,<$prenom>,<$email>,<$tel>,<$adresse>,<$cp>,<$ville>,<$pays>,<$index>,<$niveau>,souhaite s\'inscrire à la newsletter';
if (mail('a.finot@wanadoo.fr', 'Inscription newsletter', $message, $headers))
{
echo 'Le message a bien été envoyé';
}
else
{
echo 'Le message n\'a pu être envoyé';
}
?>
l'enregistrement dans ma base :
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "contacts")) {
$insertSQL = sprintf("INSERT INTO clients (ID, sexe, nom, prenom, email, tel, adresse, cp, ville, pays, `index`, niveau, offrespartenaires) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['ID'], "int"),
GetSQLValueString($_POST['sexe'], "text"),
GetSQLValueString($_POST['nom'], "text"),
GetSQLValueString($_POST['prenom'], "text"),
GetSQLValueString($_POST['email'], "text"),
GetSQLValueString($_POST['tel'], "text"),
GetSQLValueString($_POST['adresse'], "text"),
GetSQLValueString($_POST['cp'], "text"),
GetSQLValueString($_POST['ville'], "text"),
GetSQLValueString($_POST['pays'], "text"),
GetSQLValueString($_POST['index'], "text"),
GetSQLValueString($_POST['niveau'], "text"),
GetSQLValueString(isset($_POST['offrespartenaires']) ? "true" : "", "defined","'Y'","'N'"));
mysql_select_db($database_lcdvs, $lcdvs);
$Result1 = mysql_query($insertSQL, $lcdvs) or die(mysql_error());
$insertGoTo = "home.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
?>
Merci d'avance !
A voir également:
- Envoie de formulaire / php
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Formulaire de reclamation instagram - Guide
- Easy php - Télécharger - Divers Web & Internet
- Envoie impossible messenger - Forum Facebook Messenger
9 réponses
Bonjour
pour qu'il fasse les deux, il suffit de mettre l'envoi du mail juste après la requête d'insertion, puisque cette insertion n'est faite que quand il y a des données.
pour qu'il fasse les deux, il suffit de mettre l'envoi du mail juste après la requête d'insertion, puisque cette insertion n'est faite que quand il y a des données.
Merci !
C'est tellement logique !
Est-ce que tu pourrais aussi m'aider pour la récup de mes données du formulaire dans mon mail stp ?
C'est tellement logique !
Est-ce que tu pourrais aussi m'aider pour la récup de mes données du formulaire dans mon mail stp ?
Tu les récupères par
$ID = get_magic_quotes_gpc() ? stripslashes($_POST['ID']) : $_POST['ID'];
$sexe = get_magic_quotes_gpc() ? stripslashes($_POST['sexe']) : $_POST['sexe'];
etc...
$ID = get_magic_quotes_gpc() ? stripslashes($_POST['ID']) : $_POST['ID'];
$sexe = get_magic_quotes_gpc() ? stripslashes($_POST['sexe']) : $_POST['sexe'];
etc...
Merci encore pour ton aide !
Je ne comprends pas pourquoi je n'y arrive pas :-(
Y'a forcément un truc que je ne fais pas correctement, est-ce qu'avec ce bout de code tu peux me dire quoi ?
$email =get_magic_quotes_gpc() ? stripslashes($_POST['email']) : $_POST['email'];
$headers ='From: "Site Internet"<$email>'."\n";
$headers .='Reply-To: <$email>'."\n";
$headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
$message ='<$email>,<$nom>,<$prenom>,<$email>,<$tel>,<$adresse>,<$cp>,<$ville>,<$pays>,<$index>,<$niveau>,souhaite s\'inscrire à la newsletter';
if (mail('a.finot@wanadoo.fr', 'Inscription newsletter', $message, $headers))
Je ne comprends pas pourquoi je n'y arrive pas :-(
Y'a forcément un truc que je ne fais pas correctement, est-ce qu'avec ce bout de code tu peux me dire quoi ?
$email =get_magic_quotes_gpc() ? stripslashes($_POST['email']) : $_POST['email'];
$headers ='From: "Site Internet"<$email>'."\n";
$headers .='Reply-To: <$email>'."\n";
$headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
$message ='<$email>,<$nom>,<$prenom>,<$email>,<$tel>,<$adresse>,<$cp>,<$ville>,<$pays>,<$index>,<$niveau>,souhaite s\'inscrire à la newsletter';
if (mail('a.finot@wanadoo.fr', 'Inscription newsletter', $message, $headers))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
As-tu déjà utilisé la fonction mail ?
Si non, as-tu bien configuré le nom du serveur SMTP dans le fichier php.ini ?
Si non, as-tu bien configuré le nom du serveur SMTP dans le fichier php.ini ?
Non, c'est la première fois... d'où ma difficulté à l'utiliser !
Je n'ai pas de fichier php.ini... mais quel rapport avec les récup des données de mon formulaire ?
Je reçois bien le mail... là-dessus pas de problème ! Mais je reçois ça :
<$email>,<$nom>,<$prenom>,<$email>,<$tel>,<$adresse>,<$cp>,<$ville>,<$pays>,<$index>,<$niveau>,souhaite s'inscrire à la newsletter
Et même problème avec le mail de l'envoyeur j'ai $email
J'ai démarré y'a pas longtemps alors il y a encore des tas de trucs que je ne sais pas faire ;-)
Je n'ai pas de fichier php.ini... mais quel rapport avec les récup des données de mon formulaire ?
Je reçois bien le mail... là-dessus pas de problème ! Mais je reçois ça :
<$email>,<$nom>,<$prenom>,<$email>,<$tel>,<$adresse>,<$cp>,<$ville>,<$pays>,<$index>,<$niveau>,souhaite s'inscrire à la newsletter
Et même problème avec le mail de l'envoyeur j'ai $email
J'ai démarré y'a pas longtemps alors il y a encore des tas de trucs que je ne sais pas faire ;-)
Le problème vient de tes ', qui faut remplacer par des " :
$message ="<$email>,<$nom>,<$prenom>,<$email>,<$tel>,<$adresse>,<$cp>,<$ville>,<$pays>,<$index>,<$niveau>,souhaite s\'inscrire à la newsletter";
si tu mets des ', ce qui est a l'intérieur est traité comme chaine de caractères et le code php n'est pas interprété
$message ="<$email>,<$nom>,<$prenom>,<$email>,<$tel>,<$adresse>,<$cp>,<$ville>,<$pays>,<$index>,<$niveau>,souhaite s\'inscrire à la newsletter";
si tu mets des ', ce qui est a l'intérieur est traité comme chaine de caractères et le code php n'est pas interprété
Je suis pas un pro mais, ce serais pas ça plutôt:
$email = GetSQLValueString($_POST['email']);
$headers ='From: "Site Internet"<$email>'."\n";
$headers .='Reply-To: <$email>'."\n";
$headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
$message = $email.','.$nom.','.$prenom.','.$email.','.$tel.','.$adresse.','.$cp.','.$ville.','.$pays.','.$index.','.$niveau.'souhaite s\'inscrire à la newsletter';
$email = GetSQLValueString($_POST['email']);
$headers ='From: "Site Internet"<$email>'."\n";
$headers .='Reply-To: <$email>'."\n";
$headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
$message = $email.','.$nom.','.$prenom.','.$email.','.$tel.','.$adresse.','.$cp.','.$ville.','.$pays.','.$index.','.$niveau.'souhaite s\'inscrire à la newsletter';
Je n'ai pas de fichier php.ini
Si tu travailles en local (easyphp, Wampserver..) tu en as un et il faut configurer une ligne dedans (c'est très simple) non pas pour récupérer les données de ton formulaire, mais pour pouvoir envoyer des mails.
Si tu travailles directement en ligne chez un hébergeur, pas de soucis, il l'a configuré pour toi. Il faut juste espérer que ton hébergeur n'est pas banni par le destinataire, ce qui est malheureusement très fréquent.
Si tu travailles en local (easyphp, Wampserver..) tu en as un et il faut configurer une ligne dedans (c'est très simple) non pas pour récupérer les données de ton formulaire, mais pour pouvoir envoyer des mails.
Si tu travailles directement en ligne chez un hébergeur, pas de soucis, il l'a configuré pour toi. Il faut juste espérer que ton hébergeur n'est pas banni par le destinataire, ce qui est malheureusement très fréquent.