Envoie de formulaire / php

Résolu
a.finot Messages postés 80 Statut Membre -  
 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 !

9 réponses

  1. 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
  2. a.finot Messages postés 80 Statut Membre 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
  3. 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
  4. a.finot Messages postés 80 Statut Membre 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
  7. a.finot Messages postés 80 Statut Membre 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
  8. 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
  9. Ozimandias Messages postés 528 Statut Membre 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
  10. 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