Page 1 sur 2
Formulaire
Posté : 26 avr. 2006, 11:28
par Graphix
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
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

Posté : 26 avr. 2006, 11:29
par ouckileou
Ton formulaire est peut-être mal transmis par exemple, regarde ce que contient le tableau POST :
echo '<pre>';
print_r($_POST);
echo '</pre>';
Posté : 26 avr. 2006, 11:30
par charabia
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.
Posté : 26 avr. 2006, 11:32
par ludger
Pourrais tu nous montrer le code du formulaire? ça nous aiderait à t'aider... Car je pense que tu as oublié "value=""
Posté : 26 avr. 2006, 11:38
par PsykoCors
Idem que lug, les "value" ne sont pas la ou pas correct !
Posté : 26 avr. 2006, 11:50
par Graphix
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
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é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élé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>
Posté : 26 avr. 2006, 11:53
par charabia
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

Posté : 26 avr. 2006, 11:59
par ouckileou
Je ne vois pas ce que l'attribut "value" vient faire là-dedans
"value" c'est pour pré-remplir le champ texte, ce n'est pas obligatoire
Posté : 26 avr. 2006, 12:00
par Ryle
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

Posté : 26 avr. 2006, 12:02
par ouckileou
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']
Posté : 26 avr. 2006, 12:04
par Graphix
Donc le problème ce n'est pas "value" comme le dit charabia ?
Les champs ont des noms :
Ca ne suffit pas pour récupérer le contenu ?
Posté : 26 avr. 2006, 12:05
par ouckileou
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...
Posté : 26 avr. 2006, 12:06
par Graphix
ouckileou, c'est une erreur que j'avais corrigé, je me suis trompé de fichier pour reprendre le code
Mais le problème n'est pas la.
Je veux bien tester ce bout de code, mais où le mettre ? Dans form.php ?
Posté : 26 avr. 2006, 12:10
par charabia
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

Posté : 26 avr. 2006, 12:19
par Graphix
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
