Envoie de formulaire / php

Résolu
a.finot Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   -  
 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 !
A voir également:

9 réponses

le père
 
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.
0
a.finot Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   2
 
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 ?
0
le père
 
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...
0
a.finot Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   2
 
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))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
le père
 
As-tu déjà utilisé la fonction mail ?
Si non, as-tu bien configuré le nom du serveur SMTP dans le fichier php.ini ?
0
a.finot Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   2
 
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 ;-)
0
jeangilles Messages postés 816 Date d'inscription   Statut Membre Dernière intervention   186
 
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é
0
Ozimandias Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   46
 
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';
0
le père
 
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.
0