Rechercher : dans
Par :

Envoi formulaire complexe sur email via PHP

Dernière réponse le 27 sep 2007 à 18:09:02 smov6, le 26 sep 2007 à 16:01:03 
 Signaler ce message aux modérateurs

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 ;)

Configuration: Windows XP
Firefox 2.0.0.7

Meilleures réponses pour « Envoi formulaire complexe sur email via PHP » dans :
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
[Webmaster] Un formulaire de contact pour votre site VoirCe formulaire permet d'avoir une page pour être contacté sur son site, sans utiliser de logiciel de messagerie. La personne qui vous contacte indique son adresse, l'objet du message et son message (évidemment). Le code est une version...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
Les formulaires HTML VoirIntérêt d'un formulaire Les formulaires interactifs permettent aux auteurs de pages Web de doter leur page web d'éléments interactifs permettant par exemple un dialogue avec les internaute, à la manière des coupons-réponse présents dans certains...
PHP - Mail et fonctions réseau VoirPHP étant un langage consacré au Web, il possède bien évidemment des fonctions lui permettant de communiquer avec le "monde extérieur" à l'aide de fonctions standards. Le service le plus utilisé sur Internet étant la messagerie électronique, il est...

1

bg62, le 26 sep 2007 à 16:18:20

Salut ...
encore une fois:
http://www.unesourisetmoi.info/formulaires/index.php
@mitiés
b g le 'www' est fait aussi pour communiquer, partager et échanger, non ?

Répondre à bg62

2

smov6, le 26 sep 2007 à 16:18:52

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 ... :)

Répondre à smov6

3

smov6, le 26 sep 2007 à 16:31:09

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.

Répondre à smov6

4

pas de pseudo, le 26 sep 2007 à 17:01:37

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 !

Répondre à pas de pseudo

5

smov6, le 26 sep 2007 à 17:10:24

Euh .... non lol

Répondre à smov6

6

pas de pseudo, le 26 sep 2007 à 17:26:45

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

Répondre à pas de pseudo

7

smov6, le 26 sep 2007 à 17:29:23

Merci beaucoup, je vais étudier ca ;)

Répondre à smov6

8

smov6, le 26 sep 2007 à 18:34:57

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/c_outils/c_formulaire.h­tm)

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 :(

Répondre à smov6

9

smov6, le 26 sep 2007 à 19:29:47
  • +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>

Répondre à smov6

10

pas de pseudo, le 26 sep 2007 à 20:23:51

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";

Répondre à pas de pseudo

11

pas de pseudo, le 26 sep 2007 à 20:25:32

Ca marchera peur etre mieux avec un "."
$body.="blablabla";

plutot que
$body="blablabla";

Répondre à pas de pseudo

12

smov6, le 26 sep 2007 à 20:41:40

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 ??

Répondre à smov6

13

pas de pseudo, le 26 sep 2007 à 20:53:47

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 ?

Répondre à pas de pseudo

14

smov6, le 26 sep 2007 à 21:03:05

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], ";
}

Répondre à smov6

15

smov6, le 26 sep 2007 à 21:09:16

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.

Répondre à smov6

16

pas de pseudo, le 26 sep 2007 à 21:11:36

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], ";
}
}

Répondre à pas de pseudo

17

smov6, le 26 sep 2007 à 21:14:14

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 ...

Répondre à smov6

18

pas de pseudo, le 26 sep 2007 à 21:29:51

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

Répondre à pas de pseudo

19

smov6, le 26 sep 2007 à 21:34:22

C'est la grosse galère ... ça fait pareil :(

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

j'y comprend rien !

Répondre à smov6