Envoi formulaire complexe sur email via PHP

Fermé
smov6 Messages postés 8 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 27 septembre 2007 - 26 sept. 2007 à 16:01
 smov6 - 27 sept. 2007 à 18:09
Salut a tous,

Cela fait maintenant 1 semaine que je cherche une solution à mon probleme.

J'ai créer un formulaire comprenant des champs texte, des boutons radio, des cases a cocher .... bref unn peut de tout ;)
Je désire envoyer les données complétées par l'utilisateur sur ma boite email, je pense que le meilleur moyen est de passer par un fichier PHP, cependant je ne trouve aucuns tutorial clair qui comporte de multiples champs a inclure dans le "body" du mail.

De plus il faut absolument que je termine ce truc le plus rapidement possible :(

Si un pro pouvait me filer un coup de pouce je lui en serait éternellemnt reconnaissant ;)

44 réponses

smov6 Messages postés 8 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 27 septembre 2007 1
26 sept. 2007 à 16:18
Voila le code PHP que j'utilise :

<?php
$Interet=$_POST['Interet'];
$Quel_interet=$_POST['Quel_interet'];
$appel=$_POST['appel'];
$Si_NON_Pourquoi=$_POST['Si_NON_Pourquoi'];
$autres_besoins=$_POST['autres_besoins'];
$Commentaires=$_POST['Commentaires'];
$Nom=$_POST['Nom'];
$Prenom=$_POST['Prenom'];
$societe=$_POST['societe'];
$fonction=$_POST['fonction'];

/////voici la version Mine
$headers = "MIME-Version: 1.0\r\n";

//////ici on détermine le mail en format text
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";

////ici on détermine l'expediteur et l'adresse de réponse
$headers .= "From: $Nom\r\n";

$subject="Enquete";
$destinataire="jerome.smo@orange.fr";
$body="Quel interet : $Quel_interet";
$body="Nom: $Nom";
if (mail($destinataire,$subject,$body,$headers)) {
echo "Votre mail a été envoyé";
} else {
echo "Une erreur s'est produite";
}
?>

Je ne sais pas comment verifier si des champs ne sont pas remplis ni comment on defini si une variable est de type checkbox ou en core comment intégrer plusieurs variables dans le body du message ...

Merci de votre aide ... :)
1
j'ai un peu l'impression de faire un monologue lol

enfin j'ai réussi a debuger le truc :)

me reste qu'un seul soucy et pas des moindres, je recois le mail mais il ne comporte que la derniere réponse du formulaire et aps les autres :(

je reposte mon code modifié :

<html>
<head>

</head>
<body>
<?
ini_set('sendmail_from', 'enquete@aol.com');
$Interet=$_POST['Interet'];
$Quel_interet=$_POST['Quel_interet'];
$appel=$_POST['appel'];
$Si_NON_Pourquoi=$_POST['Si_NON_Pourquoi'];
$autres_besoins=$_POST['autres_besoins'];
$Commentaires=$_POST['Commentaires'];
$Nom=$_POST['Nom'];
$Prenom=$_POST['Prenom'];
$societe=$_POST['societe'];
$fonction=$_POST['fonction'];
$MailTo = "jerome.smo@wanadoo.fr";
$MailSubject = "Enquete";
$Envoi = 1;


if ($Interet == ""){
echo("Merci de préciser votre interet<br>");
$Envoi = 0;
}
else {
$body= "Interet : $Interet\n";
}

$body="Quel_interet : $Quel_interet\n";
$items = 21;
for ($i = 1; $i <= $items; $i++) {
$body= "$Quel_interet[$i], ";
}
if ($appel == ""){
echo("Merci de préciser si vous désirez faire appel à nos service<br>");
$Envoi = 0;
}
else {
$body= "appel : $appel\n";
}
if ($Nom == ""){
echo("Vous n'avez renseigné votre nom.<br>");
$Envoi = 0;
}
else {
$body= "Nom : $Nom\n";
}
if ($Prenom == ""){
echo("Vous n'avez renseigné votre prénom.<br>");
$Envoi = 0;
}
else {
$body= "Prenom : $Prenom\n";
}
if ($societe == ""){
echo("Vous n'avez renseigné le nom de votre société.<br>");
$Envoi = 0;
}
else {
$body= "Societe : $societe\n";
}
if ($fonction == ""){
echo("Vous n'avez renseigné votre fonction.<br>");
$Envoi = 0;
}
else {
$body= "Fonction : $fonction\n";
}
if ($Envoi == 0) {
echo("<p><a href=\"Javascript:history.go(-1)\"><center><strong>RETOUR</strong></center></a></p>");
}


if ($Envoi == 1) {
echo("<p><strong>Etes vous intéressé ? <font color=\"#0000FF\">$Interet</font>\n");
echo("<br>Quand pourriez-vous faire appel a nos services ? <font color=\"#0000FF\">$appel</font>\n");
echo("<br>Si non pourquoi ? <font color=\"#0000FF\">$Si_NON_Pourquoi</font>\n");
echo("<br>Auriez vous d'autres besoins ? <font color=\"#0000FF\">$autres_besoins</font>\n");
echo("<br>Quelques commentaires ? <font color=\"#0000FF\">$Commentaires</font>\n");
echo("<br>Nom : <font color=\"#0000FF\">$Nom</font>\n");
echo("<br>Prénom : <font color=\"#0000FF\">$Prenom</font>\n");
echo("<br>Société : <font color=\"#0000FF\">$societe</font>\n");
echo("<br>Fonction : <font color=\"#0000FF\">$fonction</font>\n");
echo("<p> </p>");
mail($MailTo, $MailSubject, $body);
echo("<p>Votre message a bien été envoyé.<br>Merci de vos commentaires.");
echo("<p> </p><p> </p><p align=\"center\"><a href=\"index.htm\">Retour</strong></a></p>");
}
?>
</body>
</html>
1
bg62 Messages postés 23590 Date d'inscription samedi 22 octobre 2005 Statut Modérateur Dernière intervention 15 avril 2024 2 362
26 sept. 2007 à 16:18
salut ...
encore une fois:
https://www.unesourisetmoi.info/formulaires/index.php
@mitiés
b g
0
smov6 Messages postés 8 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 27 septembre 2007 1
26 sept. 2007 à 16:31
Merci BG...

Mais dans ton lien on ne peut pas intégrer des checkbox ou de boutons radio :(

Donc mon soucis reste le même.
0

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

Posez votre question
pas de pseudo
26 sept. 2007 à 17:01
A mon avis le plus simple : tu creer un champs dans ton formulaire qui va servir a recuperer les infos que tu veux. En javascript, tu concatene les infos dans ce champs et tu les envoie dans ton mails en relisant ce meme champs en php. Tout simple, non !
0
smov6 Messages postés 8 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 27 septembre 2007 1
26 sept. 2007 à 17:10
euh .... non lol
0
pas de pseudo
26 sept. 2007 à 17:26
je te mets un exemple : c'est un formulaire qui demande nom, adresse, code postal ... ainsi que des cases à cocher

<script language="JavaScript">
<!--
function concatenation() {
//verifier que le formulaire est rempli
if(!document.formulaire.nom.value.length){alert("Renseignez le nom");return;}
if(!document.formulaire.adresse.value.length){alert("Renseignez l'adresse");return;}
if(!document.formulaire.cp.value.length){alert("Renseignez le code postal");return;}
if(!document.formulaire.ville.value.length){alert("Renseignez la ville");return;}

document.formulaire.email2.value=monemail@chezmoi.fr; // tu mets ton adresse
document.formulaire.titre.value='quelqu'un vient de valider mon formulaire; // titre du mail que tu recoit
document.formulaire.message.value='case à cocher 1 : ';
document.formulaire.message.value+=document.formulaire.radiobutton1.checked;
document.formulaire.message.value+='\ncase à cocher 2 : ';
document.formulaire.message.value+=document.formulaire.radiobutton2.checked;
document.formulaire.message.value+='\ncase à cocher 3 : ';
document.formulaire.message.value+=document.formulaire.radiobutton3.checked;
document.formulaire.message.value+='\nADRESSE : ';
document.formulaire.message.value+=document.formulaire.adresse.value;
document.formulaire.message.value+='\nCP : ';
document.formulaire.message.value+=document.formulaire.cp.value;

...
document.formulaire.submit(); // normalemant dans ton formulaire tu a qquchose comme : <FORM METHOD="POST" ACTION="envoimail.php" name="formulaire">
}
</script>

dans le fichier envoimail.php, tu fais un truc du genre :
$texte_html .= $message;
$texte_html .= "\n\n\n------=$limite\n";

$headers="From: ".$email1;
mail($email2,$titre,stripslashes($texte_html),$entete);


J'espère que tu as compris. Bon courage
0
smov6 Messages postés 8 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 27 septembre 2007 1
26 sept. 2007 à 17:29
merci beaucoup, je vais étudier ca ;)
0
smov6 Messages postés 8 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 27 septembre 2007 1
26 sept. 2007 à 18:34
avant que tu ne postes ton code je m'étais lancé dans la modification d'un tuto trouvé sur le web (http://www.toulouse-renaissance.net/herbal-remedies/

Je pense que je ne suis pas loin de la solution :) mais j'ai une erreur "Undefined variable".

Voila le code :

------------------------------------------------------------------------------------------------------------------------------------------------

<html>
<head>

</head>
<body>
<?
$Interet=$_POST['Interet'];
$Quel_interet=$_POST['Quel_interet'];
$appel=$_POST['appel'];
$Si_NON_Pourquoi=$_POST['Si_NON_Pourquoi'];
$autres_besoins=$_POST['autres_besoins'];
$Commentaires=$_POST['Commentaires'];
$Nom=$_POST['Nom'];
$Prenom=$_POST['Prenom'];
$societe=$_POST['societe'];
$fonction=$_POST['fonction'];
$MailTo = "jerome.smo@wanadoo.fr";
$MailSubject = "Enquete";
$Envoi = 1;


if ($Interet == ""){
echo("Merci de préciser votre interet<br>");
$Envoi = 0;
}
else {
$MailBody .= "Interet : $Interet\n";
}

$MailBody .="Quel_interet : $Quel_interet\n";
$items = 21;
for ($i = 1; $i <= $items; $i++) {
$MailBody .= "$Quel_interet[$i], ";
}
if ($appel == ""){
echo("Merci de préciser si vous désirez faire appel à nos service<br>");
$Envoi = 0;
}
else {
$MailBody .= "appel : $appel\n";
}
if ($Nom == ""){
echo("Vous n'avez renseigné votre nom.<br>");
$Envoi = 0;
}
else {
$MailBody .= "Nom : $Nom\n";
}
if ($Prenom == ""){
echo("Vous n'avez renseigné votre prénom.<br>");
$Envoi = 0;
}
else {
$MailBody .= "Prenom : $Prenom\n";
}
if ($societe == ""){
echo("Vous n'avez renseigné le nom de votre société.<br>");
$Envoi = 0;
}
else {
$MailBody .= "Societe : $societe\n";
}
if ($fonction == ""){
echo("Vous n'avez renseigné votre fonction.<br>");
$Envoi = 0;
}
else {
$MailBody .= "Fonction : $fonction\n";
}
if ($Envoi == 0) {
echo("<p><a href=\"Javascript:history.go(-1)\"><center><strong>RETOUR</strong></center></a></p>");
}


if ($Envoi == 1) {
echo("<p><strong>Etes vous intéressé ? <font color=\"#0000FF\">$Interet</font>\n");
echo("<br>Quels Prestations ? <font color=\"#0000FF\">$Quel_interet</font>\n");
echo("<br>Quand pourriez-vous faire appel a nos services ? <font color=\"#0000FF\">$appel</font>\n");
echo("<br>Si non pourquoi ? <font color=\"#0000FF\">$Si_NON_Pourquoi</font>\n");
echo("<br>Auriez vous d'autres besoins ? <font color=\"#0000FF\">$autres_besoins</font>\n");
echo("<br>Quelques commentaires ? <font color=\"#0000FF\">$Commentaires</font>\n");
echo("<br>Nom : <font color=\"#0000FF\">$Nom</font>\n");
echo("<br>Prénom : <font color=\"#0000FF\">$Prenom</font>\n");
echo("<br>Société : <font color=\"#0000FF\">$societe</font>\n");
echo("<br>Fonction : <font color=\"#0000FF\">$fonction</font>\n");
echo("<p> </p>");
mail($MailTo, $MailSubject, $MailBody);
echo("<p>Votre message a bien été envoyé.<br>Merci de vos commentaires.");
echo("<p> </p><p> </p><p align=\"center\"><a href=\"index.htm\">Retour</strong></a></p>");
}
?>
</body>
</html>


------------------------------------------------------------------------------------------------------------------------------------------------

et voila le message d'erreur dans le navigateur :

Notice: Undefined variable: MailBody in D:\home\Default\alsprod.com\htdocs\envoi2.php on line 27

Etes vous intéressé ? OUI
Quels Prestations ? Automatismes_Schneider
Quand pourriez-vous faire appel a nos services ? 6_mois
Si non pourquoi ? zarenfjlrebgvjzrb
Auriez vous d'autres besoins ? v nbjb vjlz bqleb
Quelques commentaires ? ,cn msqvgbhjq b
Nom : cvdsfbv
Prénom : fbg
Société : qsdfsf
Fonction : bbndg



Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in D:\home\Default\alsprod.com\htdocs\envoi2.php on line 87

Votre message a bien été envoyé.
Merci de vos commentaires.

Je pense que je commence a toucher au but ;) non ???
J'ai donc 2 soucis pour l'instant, cette variable "Mailbody qui semble ne pas être reconnu et le fait que je ne recoive le résultat que d'une seule case coché (la dernière).
Et je ne recoit toujours pas le mail :(
0
pas de pseudo
26 sept. 2007 à 20:23
Peut etre qu'à chaque fois que tu veux rajouter qqch dans $body tu l'écrase au lieu de l'ajoute. essaye :
$body+="blablabla";

plutot que
$body="blablabla";
0
pas de pseudo
26 sept. 2007 à 20:25
ca marchera peur etre mieux avec un "."
$body.="blablabla";

plutot que
$body="blablabla";
0
merci beaucoup, c'était effectivemnt ca !

la ca fonctionne :)

Mai il me reste un soucis, j'ai 21 checkbox sur mon formulaire, lorsque j'en coche plusieurs, je ne récupèe que la derniere ...

tu aurais pas une idée ??
0
pas de pseudo
26 sept. 2007 à 20:53
J'imagine que c'est dans cette partie :

$body="Quel_interet : $Quel_interet\n"; // je ne voit pas l'interet de cette ligne vu la suite
$items = 21;
for ($i = 1; $i <= $items; $i++) {
$body= "$Quel_interet[$i], ";
}

a part changer
$body.="Quel_interet : $Quel_interet\n";
et
$body.= "$Quel_interet[$i], ";

je ne vois pas. Tu est sur que qd tu recupere $Quel_interet=$_POST['Quel_interet'];

tu as bien tes 21 réponses ?
0
tu as raison il manquait les "." apres le body mais j'ai corrigé ça ;)

en fait c'est dans mon formulaire ou j'avais oublié les "[]" donc la ca fonctionne mais .... car il y a forcément un mais :( j'ai ce type d'erreur

Notice: Undefined offset: 6 in D:\home\Default\alsprod.com\htdocs\envoi2.php on line 34
Notice: Undefined offset: 7 in D:\home\Default\alsprod.com\htdocs\envoi2.php on line 34
Notice: Undefined offset: 8 in D:\home\Default\alsprod.com\htdocs\envoi2.php on line 34
Notice: Undefined offset: 9 in D:\home\Default\alsprod.com\htdocs\envoi2.php on line 34
Notice: Undefined offset: 10 in D:\home\Default\alsprod.com\htdocs\envoi2.php on line 34
Notice: Undefined offset: 11 in D:\home\Default\alsprod.com\htdocs\envoi2.php on line 34
Notice: Undefined offset: 12 in D:\home\Default\alsprod.com\htdocs\envoi2.php on line 34
Notice: Undefined offset: 13 in D:\home\Default\alsprod.com\htdocs\envoi2.php on line 34
Notice: Undefined offset: 14 in D:\home\Default\alsprod.com\htdocs\envoi2.php on line 34
Notice: Undefined offset: 15 in D:\home\Default\alsprod.com\htdocs\envoi2.php on line 34
Notice: Undefined offset: 16 in D:\home\Default\alsprod.com\htdocs\envoi2.php on line 34
Notice: Undefined offset: 17 in D:\home\Default\alsprod.com\htdocs\envoi2.php on line 34
Notice: Undefined offset: 18 in D:\home\Default\alsprod.com\htdocs\envoi2.php on line 34
Notice: Undefined offset: 19 in D:\home\Default\alsprod.com\htdocs\envoi2.php on line 34
Notice: Undefined offset: 20 in D:\home\Default\alsprod.com\htdocs\envoi2.php on line 34
Notice: Undefined offset: 21 in D:\home\Default\alsprod.com\htdocs\envoi2.php on line 34

Etes vous intéressé ? OUI
Quand pourriez-vous faire appel a nos services ? 3_mois
Si non pourquoi ? dfjzuofrgb
Auriez vous d'autres besoins ? dmkzerngjzbre
Quelques commentaires ? BNFKJEZBFRBG
Nom : defrg
Prénom : hytjnt
Société : kil
Fonction : sqwfz

Votre message a bien été envoyé.
Merci de vos commentaires.


Sachant que j'avais coché les 5 premières cases, en fait il trouve une erreur sur les cases qui ne sont pas cochés ...
Sinon le mail que je recoit est NIKEL ! (trop content lol)
Mais il faut absolument que je trouve une solution ....


et voila mon code:

$body .="Quel_interet : $Quel_interet\n";
$items = 21;
for ($i = 1; $i <= $items; $i++) {
$body .= "$Quel_interet[$i], ";
}
0
J'ai fais quelques test ... en cochant toutes les cases et et mettant 20 à la place de 21 dans le code PHP, je n'obtiens aucuns messages d'erreurs ...

huuuuum bizarre, j'ai beau retourner le truc je ne vois pas.
0
pas de pseudo
26 sept. 2007 à 21:11
apparement, il ne veut pas afficher les valeur "nulles"

essaye de tester avant de les afficher

$body .="Quel_interet : $Quel_interet\n";
$items = 21;
for ($i = 1; $i <= $items; $i++) {
if ($Quel_interet[$i]<>""){
$body.= "interet : $i ;
$body .= "$Quel_interet[$i], ";
}
}
0
arf ...

je viens de tester mais il me dit qu'il y a un erreur sur cette ligne :

$body .= "$Quel_interet[$i], ";

voila le message : Parse error: parse error, unexpected T_VARIABLE in D:\home\Default\alsprod.com\htdocs\envoi2.php on line 36

j'pige po la ...
0
pas de pseudo
26 sept. 2007 à 21:29
a priori c'est sur la ligne precedente, j'ai fait une faute de frappe :
j'ai pas ferme mes guillemet:
$body.= "interet : $i" ;

j'espere que ce coup ci c'est bon
0
c'est la grosse galère ... ça fait pareil :(

de plus il me manque la premier checkbox dans le mail :(

j'y comprend rien !
0
sinon je peux peut etre leur donné un nom diférent ?

qu'en pense tu ?
0