Page 1 sur 2

problème avec envoi de formulaire php

Posté : 23 sept. 2007, 15:04
par marc-etienne
Bonjour !!

je suis tout nouveau en php, et j'ai créé un formulaire en html, avec comme methode d'envoi un bouton vers envoi.php. Seulement voila apparrement le php ne fonctionne pas correctement, la page de confirmation s'affiche correctement, le mail s'envoi, je le reçois, mais les champs qui ont été remplis par les visiteurs restent vide !! De même sur la page de confirmation, j'ai mis un code disant "Merci, $nom" mais il n'affiche que "MERCI, "

Voici les codes de mes deux fichiers :

D'abord, le formulaire en html :

Code : Tout sélectionner

<HTML> <HEAD> <TITLE>E-Mail Formulaire</TITLE> </HEAD> <BODY> <FORM method="POST" action="envoi.php"> <P>Votre nom:<br> <INPUT type="text" name="nom" size=30> </p> <P>Votre adresse E-Mail:<br> <INPUT type="text" name="email" size=30> </p> <P>Message:<br> <textarea name="message" cols=30 rows=5></textarea> </p><INPUT type="submit" value="Envoyer"> </FORM> </BODY> </HTML>
puis le fichier envoi.php
<?php 
$nom = $_POST['nom'];
$email = $_POST['email'];
$message = $_POST['message'];
//Pour définir chaque input du formulaire, ajouter le signe de dollar devant
$msg .= "E-Mail:\t$email\n";
$msg .= "Message:\t$Message\n\n";
//Pourait continuer ainsi jusqu'à la fin du formulaire
$recipient = "[email protected]";
$subject = "Formulaire";
$mailheaders = "From: Commande <> \n";
$mailheaders .= "Reply-To: $email\n\n";
mail($recipient, $subject, $msg, $mailheaders);
echo "<HTML><HEAD>";
echo "<TITLE>Formulaire envoyé!</TITLE></HEAD><BODY>";
echo "<H1 align=center>Merci, $nom </H1>";
echo "<P align=center>";
echo "Votre demande à bien été envoyé ! Nous ne tarderons pas à y donner suite !</P>";
echo "</BODY></HTML>";
?> 
Je suis sur 1and1, qui normalement je crois devrait gérer le php et la commande mail()
Je desespère

Merci à tout ceux qui répondront

Marc-Etienne

Posté : 23 sept. 2007, 15:07
par zeus
Modération :
marc-etienne, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ

Posté : 23 sept. 2007, 15:09
par zeus
sur la page envoi.php, fait un
var_dump($_POST);
et postes nous le résultat.

La commance var_dump() affiche le contenu d'une variable en précisant le type du contenu. Dans le cas présent, la variable est $_POST, c'est à dire le tableau contenant les données postées par ton formulaire ;)

Resultat

Posté : 23 sept. 2007, 15:24
par marc-etienne
re

Désolé pour la mise en forme du précédent message, je vais veiller mieux les préparer

j'ai donc mis au début de mon fichier envoi.php la commande var dump($_POST);

en executant le formulaire, la page a mis du temps à s'ouvrir puis m'a affiché :

array(0) { }
Merci,
Votre demande à bien été envoyé ! Nous ne tarderons pas à y donner suite !
[/url][/php]

pardon

Posté : 23 sept. 2007, 15:26
par marc-etienne
Non désolé, elle n'a pas indiqué la fin, je ne sais pas pourquoi ceci s'est affiché.
voici ce qu'elle m'a mis :
array(0) { }
Merci,
Votre demande à bien été envoyé ! Nous ne tarderons pas à y donner suite !

du nouveau

Posté : 23 sept. 2007, 15:55
par marc-etienne
Bon, je me suis bien planté. Je recommence

J'ai refait des test avec les codes précédemment mis, d'un coup ca a marché. a n'y rien comprendre. Maintenant tout est parfait, le mail s'envoi avec les données rentrées par le visiteur, etc.
Bon, mais maintenant, ca c'était juste pour les tests. J'avais fait quelques jours plus tôt tout une page avec un formulaire, plus compliqué cette fois. Et en essayant avec cette page, CA NE MARCHE PLUS !!

Je met le code html ici, désolé je n'ai pas su quoi retirer pour le réduire

Code : Tout sélectionner

<html> <head> <title>Commande</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <style type="text/css"> <!-- body { background-color: #0099FF; } .Style1 { font-size: 36px; font-weight: bold; } .Style7 {color: #FFFFFF} .Style8 {font-size: 15px; color: #FFFFFF; } .Style13 {font-size: 12px} .Style14 {font-size: 12px; color: #FFFFFF; } .Style18 {font-size: 15px} .Style19 {font-size: 18px} .Style20 {color: #FFFFFF; font-size: 20px; } --> </style> <script language="JavaScript" type="text/JavaScript"> <!-- function MM_findObj(n, d) { //v4.01 var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); if(!x && d.getElementById) x=d.getElementById(n); return x; } function MM_validateForm() { //v4.0 var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments; for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]); if (val) { nm=val.name; if ((val=val.value)!="") { if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@'); if (p<1 || p==(val.length-1)) errors+='- '+nm+' doit contenir une adresse email valide.\n'; } else if (test!='R') { num = parseFloat(val); if (isNaN(val)) errors+='- '+nm+' doit contenir un code postal.\n'; if (test.indexOf('inRange') != -1) { p=test.indexOf(':'); min=test.substring(8,p); max=test.substring(p+1); if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n'; } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' est obligatoire.\n'; } } if (errors) alert('Une erreur à été trouvé:\n'+errors); document.MM_returnValue = (errors == ''); } //--> </script> </head> <body> <div align="center" class="Style1"> <p align="center" class="Style7">Formulaire de commande </p> <p align="center" class="Style20">Pour commander une s&eacute;rie de CD, merci d'indiquer simplement l'adresse E-Mail qui avait servi pour les commandes pr&eacute;c&eacute;dentes, suivi de vos choix </p> <form name="form11" METHOD=POST ENCTYPE="text/plain" action="envoi.php"> <p>&nbsp;</p> <table width="38%" border="1"> <tr> <td width="35%"><span class="Style13">Email*</span></td> <td width="65%"> <input name="email" type="text" id="email" size=50></td> </tr> </table> <p align="center" class="Style8">&nbsp;</p> <p align="center" class="Style8"><img src="../cd/parolesdevie.jpg" width="225" height="225"> </p> <p align="center" class="Style8 Style19">Merci d'indiquer la quantit&eacute; souhait&eacute;e en face de chaque langue</p> <table width="70%" border="0"> <tr> <th nowrap scope="col"><div align="right"><span class="Style8">Albanais <input name="Albanais" type="text" id="Albanais"> </span></div></th> <th nowrap scope="col"><div align="right"><span class="Style8">Allemand <input name="Allemand" type="text" id="Allemand"> </span></div></th> <th nowrap scope="col"><div align="right"><span class="Style8"> <label>Arabe Standard <input name="Arabe Standard" type="text" id="Arabe Standard"> </label> </span></div></th> </tr> <tr> <td nowrap><div align="right"><span class="Style8">Arabe Alg&eacute;rien <input name="Arabe Algerien" type="text" id="Arabe Algerien"> </span></div></td> <td nowrap><div align="right"> <span class="Style18"> <label><span class="Style7">Créole Guyane et Antilles</span> <input name="Creole guyane antilles" type="text" id="Creole guyane antilles"> </label> </span> </div></td> <td nowrap><div align="right"> <span class="Style8"> <label>Créole Haiti <input name="Créole Haiti" type="text" id="Créole Haiti"> </label> </span> </div></td> </tr> <tr> <td nowrap><div align="right"><span class="Style8">Arabe Marocain <input name="Arabe Marocain" type="text" id="Arabe Marocain"> </span></div></td> <td nowrap><div align="right"><span class="Style8">Arabe Tunisien <input name="Arabe Tunisien" type="text" id="Arabe Tunisien"> </span></div></td> <td nowrap><div align="right"><span class="Style8">Arm&eacute;nien <input name="Armenien" type="text" id="Armenien"> </span></div></td> </tr> <tr> <td nowrap><div align="right"><span class="Style8">Bambara <input name="Bambara" type="text" id="Bambara"> </span></div></td> <td nowrap><div align="right"><span class="Style8">Berberes <input name="Berberes" type="text" id="Berberes"> </span></div></td> <td nowrap><div align="right"><span class="Style8">Anglais <input name="Anglais" type="text" id="Anglais"> </span></div></td> </tr> <tr> <td nowrap><div align="right"><span class="Style8">Bosniaque <input name="Bosniaque" type="text" id="Bosniaque"> </span></div></td> <td nowrap><div align="right"><span class="Style8">Espagnol <input name="Espagnol" type="text" id="Espagnol"> </span></div></td> <td nowrap><div align="right"><span class="Style8">Fran&ccedil;ais <input name="Français" type="text" id="Français"> </span></div></td> </tr> <tr> <td nowrap><div align="right"><span class="Style8">H&eacute;breu <input name="hébreu" type="text" id="hébreu"> </span></div></td> <td nowrap><div align="right"><span class="Style8">Hongrois <input name="Hongrois" type="text" id="Hongrois"> </span></div></td> <td nowrap><div align="right"><span class="Style8">Italien <input name="Italien" type="text" id="Italien"> </span></div></td> </tr> <tr> <td nowrap><div align="right"><span class="Style8">Japonais <input name="Japonais" type="text" id="Japonais"> </span></div></td> <td nowrap><div align="right"><span class="Style8">Khmer <input name="Khmer" type="text" id="Khmer"> </span></div></td> <td nowrap><div align="right"><span class="Style8">Laotien <input name="Laotien" type="text" id="Laotien"> </span></div></td> </tr> <tr> <td nowrap><div align="right"><span class="Style8">Lingala <input name="Lingala" type="text" id="Lingala"> </span></div></td> <td nowrap><div align="right"><span class="Style8">Macedonien <input name="Macedonien" type="text" id="Macedonien"> </span></div></td> <td nowrap><div align="right"><span class="Style8">Mandarin <input name="Mandarin" type="text" id="Mandarin"> </span></div></td> </tr> <tr> <td nowrap><div align="right"><span class="Style8">Polonais <input name="Polonais" type="text" id="Polonais"> </span></div></td> <td nowrap><div align="right"><span class="Style8">Portuguais <input name="Portuguais" type="text" id="Portuguais"> </span></div></td> <td nowrap><div align="right"><span class="Style8">Roumain <input name="Roumain" type="text" id="Roumain"> </span></div></td> </tr> <tr> <td nowrap><div align="right"><span class="Style8">Russe <input name="Russe" type="text" id="Russe"> </span></div></td> <td nowrap><div align="right"><span class="Style8">Serbe <input name="Serbe" type="text" id="Serbe"> </span></div></td> <td nowrap><div align="right"><span class="Style8">Swahili <input name="Swahili" type="text" id="Swahili"> </span></div></td> </tr> <tr> <td nowrap><div align="right"><span class="Style8">Turc <input name="Turc" type="text" id="Turc"> </span></div></td> <td nowrap><div align="right"><span class="Style8">Ukrainien <input name="Ukrainien" type="text" id="Ukrainien"> </span></div></td> <td nowrap><div align="right"><span class="Style8">Vietnamien <input name="Vietnamien" type="text" id="Vietnamien"> </span></div></td> </tr> <tr> <td nowrap><div align="right"><span class="Style8">Zarma <input name="Zarma" type="text" id="Zarma"> </span></div></td> <td nowrap><div align="right" class="Style8"> <label>Grec <input name="Grec" type="text" id="Grec"> </label> </div></td> <td nowrap><div align="right" class="Style8"> <label>Malgache <input name="Malgache" type="text" id="Malgache"> </label> </div></td> </tr> <tr> <td nowrap><div align="right" class="Style8"> <label>Mongol <input name="Mongol" type="text" id="Mongol"> </label> </div></td> <td nowrap><div align="right" class="Style8"> <label>More <input name="More" type="text" id="More"> </label> </div></td> <td nowrap><div align="right" class="Style8"> <label>Sangho <input name="Sangho" type="text" id="Sangho"> </label> </div></td> </tr> <tr> <td nowrap><div align="right" class="Style8"> <label>Tshiluba <input name="Tshiluba" type="text" id="Tshiluba"> </label> </div></td> <td nowrap><div align="right" class="Style8"> <label>Urdu <input name="urdu" type="text" id="urdu"> </label> </div></td> <td nowrap><div align="right" class="Style8"> <label>Yacouba <input name="Yacouba" type="text" id="Yacouba"> </label> </div></td> </tr> <tr> <td nowrap><div align="right"></div></td> <td nowrap><div align="right"> <span class="Style8"> <label>Autre <input name="autre" type="text" id="autre"> quantité <input name="quantité" type="text" id="quantité"> </label> </span> </div></td> <td nowrap><div align="right"></div></td> </tr> </table> <p align="center" class="Style8">&nbsp;</p> <p align="center" class="Style8"><img src="../cd/dieuvousaime.jpg" width="225" height="225"></p> <p align="center" class="Style8"> <label>Quantité <input name="dieuvousaime" type="text" id="dieuvousaime"> </label> </p> <p align="center" class="Style8">&nbsp;</p> <p align="center" class="Style8"><img src="../cd/lagneaudedieu.jpg" width="225" height="225"> </p> <p align="center" class="Style8"> <label>Quantité <input name="agneaudedieu" type="text" id="agneaudedieu"> </label> </p> <p align="center" class="Style8">&nbsp;</p> <p align="center" class="Style8"><img src="../cd/johnglass.JPG" width="225" height="225"> </p> <p align="center" class="Style8"> <label>Quantité <input name="johnglass" type="text" id="johnglass"> </label> </p> <p align="center" class="Style8">&nbsp;</p> <p align="center" class="Style8"><img src="../cd/bonnenouvelle.jpg" width="225" height="225"> </p> <p align="center" class="Style8"> <label>Format A4 Quantit&eacute; <input name="A4bonnenouvelle" type="text" id="A4bonnenouvelle"> </label> </p> <p align="center" class="Style8"> <label>Format A5 Quantit&eacute; <input name="a5bonnenouvelle" type="text" id="a5bonnenouvelle"> </label> </p> <p align="center" class="Style8">Format carte de cr&eacute;dit Quantit&eacute; <input name="cartecr&eacute;ditbonnenouvelle" type="text" id="cartecr&eacute;ditbonnenouvelle"> </p> <p align="center" class="Style8">&nbsp;</p> <p align="center" class="Style8"><img src="../cd/christvivant.jpg" width="225" height="225"> </p> <p align="center" class="Style8"> <label>Quantité <input name="Christvivant" type="text" id="Christvivant"> </label> <label> </label> </p> <p align="center" class="Style8">&nbsp;</p> <p align="center" class="Style8">Message: </p> <p align="center" class="Style8"> <TEXTAREA NAME=Message rows=10 cols=90></TEXTAREA> </p> <p align="center" class="Style8"> <INPUT name="SUBMIT" TYPE=SUBMIT onClick="MM_validateForm('email','','RisEmail');return document.MM_returnValue" VALUE=Envoyer> </p> <p align="center" class="Style8"> <INPUT name="RESET" TYPE=RESET VALUE=Effacer> </p> <div align="center"> <pre align="left" class="Style13">&nbsp; </pre> <pre align="left" class="Style13">&nbsp; </pre> </div> <p align="center" class="Style14">&nbsp;</p> </form> <p align="center" class="Style8">&nbsp;</p> <p align="center" class="Style14">&nbsp;</p> </div> </body> </html>
AU SECOURS

Posté : 23 sept. 2007, 15:57
par nicodiz
Dans ta balise form, rajoutes un enctype...

Code : Tout sélectionner

<form method="post" action="envoi.php" enctype="multipart/form-data"></form>

Posté : 23 sept. 2007, 17:00
par zeus
Et pour quelle raison ? Il n'y a pas de input type="file" dans son code :-k

Par contre, en retirant le enctype, ton formulaire fonctionne :shock:

PS : petit conseil : la syntaxe html, c'est toujours <balise attribut="valeur"></balise> ou <balise attribut="valeur" />

donc, par exemple,

Code : Tout sélectionner

<form name="form11" METHOD=POST action="envoi.php">
doit devenir

Code : Tout sélectionner

<form name="form11" method="post" action="envoi.php">

Posté : 23 sept. 2007, 17:06
par Joss850csi
Ce n'est peut-etre pas conseiller de le faire (que le modo me le dise) mais il existe des generateur de formulaire mail en php !!!

Meme si ce n'est pas tres bien de s'en servir sans comprendre, on peut ensuite regarder et voir un peu le code generer, c'est comme cela pour ma part que je me forme un peu, avec en plus des bouquins biensur

Au cas ou voici l'adresse ici

Au cas ou le modo peu supprimer le lien

Posté : 23 sept. 2007, 17:11
par zeus
Pas de soucis ... tu apportes un élément de réponse.

Quand quelqu'un veut apprendre, nous ne lui donnons pas le résultat tout cuit, mais effectivement, marc-etienne peut éventuellement préférer passer par un générateur de ce genre.

Il n'appartient qu'à lui de choisir entre la rapidité de ta solution, ou d'en baver un peu pour apprendre à le faire seul ;)

Posté : 23 sept. 2007, 19:05
par Joss850csi
OK je retiens la leçon...
Personnelement j'aime bien ce generateur et comme ça apres je mate un peut le code :lol:
Mais il fonctionne tres bien

Merci

suite

Posté : 23 sept. 2007, 21:13
par Marc-Etienne
Bonsoir !

merci pour votre aide


malheureusement, ca ne marche toujours pas, j'ai suivi vos instructions, j'ai testé des générateurs de formulaires, etc.. mais rien n'y fait, ca ne marche pas avec ce formulaire, et je ne vois pas où est l'erreur !

Dans mon formulaire de test ca marche niquel ( voir plus haut ) mais dans celui ci non, le mail arrive sans les informations.

Posté : 23 sept. 2007, 21:19
par zeus
Est-ce que tu as lu cette réponse ?
Et pour quelle raison ? Il n'y a pas de input type="file" dans son code :-k

Par contre, en retirant le enctype, ton formulaire fonctionne :shock:

PS : petit conseil : la syntaxe html, c'est toujours <balise attribut="valeur"></balise> ou <balise attribut="valeur" />

donc, par exemple,

Code : Tout sélectionner

<form name="form11" METHOD=POST action="envoi.php">
doit devenir

Code : Tout sélectionner

<form name="form11" method="post" action="envoi.php">

Posté : 23 sept. 2007, 21:22
par Marc-Etienne
Oui, j'ai bien vu, j'ai modifié le code pour les balises, rajouté des guillements et mis en minuscule, mais c'est pareil. Concernant le enctype, je n'en ai pas mis puisque tu as dit que ce n'était pas utile.?
Quand tu dis que le formulaire fonctionne, que veut tu dire ??

Posté : 23 sept. 2007, 21:41
par zeus
et bien quand je met var_dump($_POST) dans le fichier envoi.php, j'ai le détail de ce que j'ai saisi dans le formulaire.

Plutôt que de cumuler les zones d'erreur, il faut commencer par s'assurer que la transmission des données fonctionne avant de vérifier le fonctionnement de l'envoi de mail.