problème avec envoi de formulaire php

marc-etienne
Invité n'ayant pas de compte PHPfrance

23 sept. 2007, 15:04

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

23 sept. 2007, 15:07

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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

23 sept. 2007, 15:09

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 ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

marc-etienne
Invité n'ayant pas de compte PHPfrance

23 sept. 2007, 15:24

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]

marc-etienne
Invité n'ayant pas de compte PHPfrance

23 sept. 2007, 15:26

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 !

marc-etienne
Invité n'ayant pas de compte PHPfrance

23 sept. 2007, 15:55

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

Eléphanteau du PHP | 18 Messages

23 sept. 2007, 15:57

Dans ta balise form, rajoutes un enctype...

Code : Tout sélectionner

<form method="post" action="envoi.php" enctype="multipart/form-data"></form>
Cancre du php, celui au fond de la salle près de la fenêtre et du radiateur....

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

23 sept. 2007, 17:00

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">
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 53 Messages

23 sept. 2007, 17:06

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
www.theitalianblog.com tout pour Nokia Symbian

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

23 sept. 2007, 17:11

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 ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 53 Messages

23 sept. 2007, 19:05

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
www.theitalianblog.com tout pour Nokia Symbian

Marc-Etienne
Invité n'ayant pas de compte PHPfrance

23 sept. 2007, 21:13

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.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

23 sept. 2007, 21:19

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">
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Marc-Etienne
Invité n'ayant pas de compte PHPfrance

23 sept. 2007, 21:22

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

23 sept. 2007, 21:41

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.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer