Envoie de formulaire / php

Résolu/Fermé
a.finot Messages postés 74 Date d'inscription mardi 21 octobre 2008 Statut Membre Dernière intervention 12 février 2014 - 1 juil. 2009 à 13:16
 le père - 2 juil. 2009 à 10:30
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 !

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.
0
a.finot Messages postés 74 Date d'inscription mardi 21 octobre 2008 Statut Membre Dernière intervention 12 février 2014 2
1 juil. 2009 à 14:02
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
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 mardi 21 octobre 2008 Statut Membre Dernière intervention 12 février 2014 2
1 juil. 2009 à 14:48
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
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 mardi 21 octobre 2008 Statut Membre Dernière intervention 12 février 2014 2
1 juil. 2009 à 15:26
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 samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 186
1 juil. 2009 à 15:32
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 502 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 10 mars 2010 46
1 juil. 2009 à 15:38
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
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