Bonjour,

Je suis totalement novice en PHP.
Je viens de créer un formulaire de contact tout simple pour ma page web et je souhaiterais récupérer ces données par mail.
J'ai créé les champs suivants : nom, mail, tel, sujet, message.
Tout semble fonctionner jusqu'à la réception du mail; seulement une fois reçu, celui-ci est vide...

Merci pour votre aide.


Voici mon formulaire html :

<form action="formmail.php" method="post" enctype="multipart/form-data">
  <p class="double">
		<label for="nom">Nom :</label>
		<input type="text" id="nom" />
	</p>
	<p class="double">
	  <label for="mail">Mail :</label>
		<input type="text" id="mail" />
	</p>
    	<p class="double">
	  <label for="telephone">Téléphone :</label>
		<input type="text" id="telephone" />
	</p>
	<p class="double">
		<label for="sujet">Sujet :</label>
		<input type="text" id="sujet" />
	</p>
	<p class="double">
	  <label for="message">Message:
		</label>
		<textarea id="message" rows="5" cols="30"></textarea>
	</p>
	<p class="simple">
		<input type="submit" value="Envoyer" />
        <input type="reset" value="Annuler"/>
	</p>
</form> 



Et voici mon PHP :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 

<?php
$TO = "contact@monsite.fr";

$h  = "From: " . $TO;

$message = "";

while (list($key, $val) = each($HTTP_POST_VARS)) {
  $message .= "$key : $val\n";
}

mail($TO, $subject, $message, $h);

Header("Location:  http://monsitefr/page_de_redirection.html");
 
?>
C'est un peu normal, as tu regardé que ton code HTML soit valide ?

Il manque l'attribut "name" sur chaque "input" de ton formulaire.

De plus, plutôt que ça

while (list($key, $val) = each($HTTP_POST_VARS)) {
  $message .= "$key : $val\n";
}


Pourquoi ne pas faire ceci :

foreach($_POST AS $key => $val)
{
$message.= $key.' : '$val."\n";
}

Modifié par Super_baloo8 (12 Mar 2013 - 01:33)
Eh bé oui en effet...
Donc maintenant ça marche mais il manque encore le texte du message dans la corps du mail...

ça donne ça :

<form action="formmail.php" method="post" enctype="multipart/form-data">
  <p class="double">
		<label for="nom">Nom :</label>
		<input type="text" name="nom" id="nom" />
	</p>
	<p class="double">
	  <label for="mail">Mail :</label>
		<input type="text" name="mail" id="mail" />
	</p>
    	<p class="double">
	  <label for="telephone">Téléphone :</label>
		<input type="text" name="telephone" id="telephone" />
	</p>
	<p class="double">
		<label for="sujet">Sujet :</label>
		<input type="text" name="sujet" id="sujet" />
	</p>
	<p class="double">
	  <label for="message">Message:</label>
		<textarea id="message" rows="5" cols="30"></textarea>
	</p>
	<p class="simple">
		<input type="submit" value="Envoyer" />
        <input type="reset" value="Annuler"/>
	</p>
</form> 


et

<?php
$TO = "contact@monmail.fr";

$h  = "From: " . $TO;

$message = "";

while (list($key, $val) = each($HTTP_POST_VARS)) {
  $message .= "$key : $val\n";
}

mail($TO, $subject, $message, $h);

Header("Location:  http://monsite/contact_envoye.html");
 
?>


(j'ai essayé de remplacer par le code que tu m'as indiqué mais il y avait une erreur de syntaxe...)

Merci mille fois
Rhooo

foreach($_POST AS $key => $val)
{
$message.= $key.' : '.$val."\n";
}


Sinon, même ce code ne changerais rien.

Je ne te donnerais pas la réponse tellement elle est évidente, mais je te conseille de relire attentivement mon premier message ...

Indice : Ce n'est pas du PHP qu'il s'agit, mais bien du HTML
Modifié par Super_baloo8 (12 Mar 2013 - 20:29)
T'es vraiment super gentil Super_baloo8... et très pédagogique!
Si florette64 ne comprend pas après ça ...