Formulaire

Eléphanteau du PHP | 22 Messages

26 avr. 2006, 11:28

Bonjour,

je nage totalement. Je ne connais pas le php, j'ai essayé plusieurs scripts, qui font trop, je souhaite quelque chose de simple.

J'ai donc, avec l'aide de quelques sites, fait ce "script" :

Code : Tout sélectionner

<?php $email_destinataire = "XXXXXXXXXXX"; $msg = $_POST["lastname"]."\n"; $msg .= $_POST["firstname"]."\n"; $msg .= $_POST["address"]."\n"; $msg .= $_POST["country"]."\n"; $msg .= $_POST["phone"]."\n"; $msg .= $_POST["email"]."\n"; $msg .= $_POST["message"]."\n"; if(!mail($email_destinataire, "Feedback du site", $msg)) { echo "ERREUR : l'e-mail n'a pas été envoyé"; } Header("Location: index.php"); ?>
L'e-mail est envoyé, la redirection est bonne. Je reçois l'e-mail, mais il est vide :shock:

Donc je suppose qu'il y a une erreure, mais je ne sais pas laquelle. Les nom des champs sont correctes :
lastname
firstname
address
country
phone
email
message
Où est mon erreur ?

Merci :D

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

26 avr. 2006, 11:29

Ton formulaire est peut-être mal transmis par exemple, regarde ce que contient le tableau POST :
echo '<pre>';
print_r($_POST);
echo '</pre>';

Avatar du membre
ViPHP
ViPHP | 3008 Messages

26 avr. 2006, 11:30

As-tu essayé d'afficher toutes tes variables avec un simple echo avant de faire l'envoie du mail ? Rien que pour tester si tu as une sortie normale.

Eléphant du PHP | 89 Messages

26 avr. 2006, 11:32

Pourrais tu nous montrer le code du formulaire? ça nous aiderait à t'aider... Car je pense que tu as oublié "value=""

Eléphant du PHP | 59 Messages

26 avr. 2006, 11:38

Idem que lug, les "value" ne sont pas la ou pas correct !

Eléphanteau du PHP | 22 Messages

26 avr. 2006, 11:50

Au fait, je suis à 300% débutant, c'est la première fois que je touche au PHP, donc si je ne comprends rien, c'est normal :mrgreen:

Voici le code de mon formulaire :

Code : Tout sélectionner

<form method=POST enctype="text/plain" action="form.php"> <table cellpadding="0" cellspacing="0" border="0" align="center" valign="bottom"> <tr> <td width="250" height="20" valign="bottom" class="ctxt">Nom :</td> </tr> <tr> <td height="20" valign="bottom"><input type="text" name="lastname" class="form"></td> </tr> <tr> <td height="20" valign="bottom" class="ctxt">Pr&eacute;nom :</td> </tr> <tr> <td height="20" valign="bottom"><input type="text" name="firstname" class="form"></td> </tr> <tr> <td height="20" valign="bottom" class="ctxt">Adresse :</td> </tr> <tr> <td height="63" valign="bottom"><textarea id="address" type="textarea" name="address" class="littlearea"></textarea></td> </tr> <tr> <td height="20" valign="bottom" class="ctxt">Pays :</td> </tr> <tr> <td height="20" valign="bottom"><input type="text" name="country" class="form"></td> </tr> <tr> <td height="20" valign="bottom" class="ctxt">T&eacute;l&eacute;phone :</td> </tr> <tr> <td height="20" valign="bottom"><input type="text" name="phone" class="form"></td> </tr> <tr> <td height="20" valign="bottom" class="ctxt">E-mail :</td> </tr> <tr> <td height="20" valign="bottom"><input type="text" name="From" class="form"></td> </tr> <tr> <td height="20" valign="bottom" class="ctxt">Message :</td> </tr> <tr> <td height="103" valign="bottom"><textarea id="Msg" type="text" name="Msg" class="textarea"></textarea></td> </tr> </table> </td> <td width="150" valign="top" align="left" class="proboticsd"> <br><table cellpadding="0" cellspacing="0" width="145" class="tableadresse"> <tr> <td><input type="Submit" name="Envoyer" value="Envoyer" class="btnenvoyer"></form></td> </tr> </table>

Avatar du membre
ViPHP
ViPHP | 3008 Messages

26 avr. 2006, 11:53

C'est exactement ça le problème ;)

Dans tous tes champs tu dois avoir une valeur. C'est cette valeur que tu reprendra avce tes $_POST.

Code : Tout sélectionner

<input type="text" name="firstname" value="mon nom" class="form">
Et si tu récupères ça dynamiquement, tu dois mettre la valeur récupérée dans le value pareil :)

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

26 avr. 2006, 11:59

Je ne vois pas ce que l'attribut "value" vient faire là-dedans :roll:

"value" c'est pour pré-remplir le champ texte, ce n'est pas obligatoire

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

26 avr. 2006, 12:00

Ce sont des champs de saisie... les valeurs sont sensées être saisies par l'utilisateur, pas par le webmaster, sinon il peut directement se les mettre en base ;)

Fais un echo du $msg avant l'envoi du mail, pour voir déjà ce qu'il contient :)

Edit : Re-Groumph ! Re-grillé par oukileou ;)

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

26 avr. 2006, 12:02

Je me permet de m'autociter :
Ton formulaire est peut-être mal transmis par exemple, regarde ce que contient le tableau POST :
echo '<pre>';
print_r($_POST);
echo '</pre>';
Si tu pouvais juste essayer...

Car tu dis "les noms des champs correspondent" mais déjà je vois
<input name="Msg">
et
$_POST['message']

Eléphanteau du PHP | 22 Messages

26 avr. 2006, 12:04

Donc le problème ce n'est pas "value" comme le dit charabia ?

Les champs ont des noms :

Code : Tout sélectionner

name="nom"
Ca ne suffit pas pour récupérer le contenu ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

26 avr. 2006, 12:05

Ca ne suffit pas pour récupérer le contenu ?
Normalement si, maintenant il faudrait vérifier que tu le récupères bien, ce contenu...

Eléphanteau du PHP | 22 Messages

26 avr. 2006, 12:06

ouckileou, c'est une erreur que j'avais corrigé, je me suis trompé de fichier pour reprendre le code :oops:

Mais le problème n'est pas la.

Je veux bien tester ce bout de code, mais où le mettre ? Dans form.php ?

Avatar du membre
ViPHP
ViPHP | 3008 Messages

26 avr. 2006, 12:10

Mets le dans ton fichier form.php en lieu et place de ton envoi de mail.

NB : autant pour moi pour le value...je dors debout :roll:

Eléphanteau du PHP | 22 Messages

26 avr. 2006, 12:19

Donc ça donne ça ? :

Code : Tout sélectionner

<?php echo '<pre>'; print_r($_POST); echo '</pre>'; $msg = $_POST["lastname"]."\n"; $msg .= $_POST["firstname"]."\n"; $msg .= $_POST["address"]."\n"; $msg .= $_POST["country"]."\n"; $msg .= $_POST["phone"]."\n"; $msg .= $_POST["email"]."\n"; $msg .= $_POST["message"]."\n"; if(!mail($email_destinataire, "Karcher RC3000", $msg)) { echo "ERREUR : l'e-mail n'a pas été envoyé"; } Header("Location: index.php"); ?>
Ca ne donne rien :oops: