Formulaire mail xhtml et css avec fichier php : soucis

Nouveau WRInaute
Bonjour,
J'ai besoin d'être éclairer... J'ai réalisé un formulaire en xhtml et css, ainsi qu'un fichier annexe php et ai quelques soucis pour le transfert direct des informations sur le mail. Mon hébergeur (ovh) prend bien en charge le php.
> Sans fichier php, les données sont bien envoyées via la messagerie.
> Lorsque je récupère un formulaire et un code php "tout fait", le mail arrive et il contient bien les infos.
> Par contre avec mon formulaire, qui me plait bien, cela ne marche pas, le mail arrive mais il est vide.
Je me demande donc d'où vient l'erreur. Mon formulaire xhtml est il mal construit? Ou dois-je intégrer plus d'options dans le fichier php? J'aimerais comprendre. Toutes les informations sont les bienvenues. J'ai lu plusieurs tutoriels, j'ai compris dans l'ensemble le principe, mais je ne comprend pas pourquoi mon formulaire ne fonctionne pas. Et j'avoue ne pas connaître le php.
Merci d'avance pour vos réponses.

Mon code html :

Code:
<div id="formulaire"> 
<form id="monform" action="envoi.php" method="post" enctype="text/plain"> 
<input type=hidden name=subject value=formmail> <br /> 
 
<fieldset> 
<legend>Vos coordonnées</legend><p> 
<label for="form_lastname">Nom  </label> 
<input type="text" id="form_lastname" name="NOM" /></p> 
<p> 
<label for="form_prenom">Prénom  </label> 
<input type="text" id="form_prenom" name="PRENOM" /></p> 
<p> 
<label for="form_mail">Mail </label> 
<input type="text" id="form_mail" name="MAIL" /></p> 
<p> 
<label for="form_tel">Téléphone </label> 
<input type="text" id="form_tel" name="TELEPHONE" /></p> 
<p> 
<label for="form_address">Adresse  </label> 
<input type="text" id="form_address" name="ADRESSE" /></p> 
<p> 
<label for="form_postal_code">Code postal  </label> 
<input type="text" id="form_postal_code" name="CODE POSTAL" /></p> 
<p> 
<label for="form_city">Ville  </label> 
<input type="text" id="form_city" name="VILLE" /></p> 
<p> 
</fieldset> 
<br /> 
 
<fieldset> 
<legend>Votre demande</legend> 
<p> 
<label for="form_sujet">Sujet </label> 
<select id="sujet" name="SUJET"> 
<option value="Appartement Renoir">Appartement Renoir</option> 
<option value="Appartement Ste Catherine">Appartement Ste Catherine</option> 
<option value="Studio Monet">Studio Monet</option> 
<option value="Studio Boudin">Studio Boudin</option> 
<option value="Studio Sisley">Studio Sisley</option> 
<option value="Informations générales">Informations générales</option> 
</select></p> 
<p> 
<label for="form_personnes">Nbre de personnes  </label> 
<input type="text" id="form_personnes" name="NOMBRE DE PERSONNES" /></p> 
<p> 
<label for="form_arrivee">Date d'arrivée  </label> 
<input type="text" id="form_arrivee" name="DATE ARRIVEE" /></p> 
<p> 
<label for="form_depart">Date de départ </label> 
<input type="text" id="form_depart" name="DATE DEPART" /></p> 
</fieldset> 
<br /> 
 
<fieldset> 
<legend>Votre message</legend> 
<p> 
<label class="cf_label" style="width: 150px;"></label> 
<textarea id="text_9" class="cf_inputbox" name="LE MESSAGE" cols="30" title="" rows="5"></textarea> 
</p> 
<p> 
</fieldset> 
 
<p> 
<label class="form_label_nostyle">&nbsp;</label> 
<input type="submit" name="submit" /></p> 
</form>

Mon fichier php:

Code:
<?php 
$TO = "madi.line@yahoo.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://www.location-honfleur-gaucher.com/merci.html");   
?>
 
WRInaute discret
Bonjour,

Déjà, première chose que je vous conseille afin que quelqu'un vous aide, c'est d'indenter votre code correctement parce que là, ça ne donne pas envie...
Ensuite, au premier coups d'oeil sur votre code php, on voit qu'il manque plusieurs choses : déjà, vous ne récupérez pas les variables postées. Donc comment voulez vous les intégrer à votre message dans ce cas là ? Commencez par verifier leur existence :

Code:
if (!empty($_POST['submit']) && $_POST['submit'] == 'submit')
{
    if (!empty($_POST['nom']) && !empty($_POST['prenom']) //Etc...
 
Nouveau WRInaute
Bonjour,
J'ai oublié de le préciser, mais je suis novice en terme de php.
Je vous remercie pour vos conseils, il est vrai que mon code n'était pas indenté...
Mon soucis est que je ne sais pas par quel bout prendre la chose, je n'arrive pas à trouver d'infos sur comment fabriquer ce document et quels éléments insérer.
J'ai fais une tentative plus complète, mais qui ne marche toujours pas. Ce qui n'est pas étonnant car je teste sans vraiment connaître la signification des réglages.
Pouvez-vous m'éclairer ? D'avance merci.

Mon code html :
Code:
<div id="formulaire">
   <form id="monform" action="envoi3.php" method="post" enctype="text/plain">
   <input type=hidden name=subject value=formmail> 
      <br />
      <fieldset>
      <legend>Vos coordonnées</legend>
      <p>
        <label for="form_lastname">Nom  </label>
          <input type="text" id="form_lastname" name="nom" />
        </p><p>
        <label for="form_prenom">Prénom  </label>
          <input type="text" id="form_prenom" name="prenom" />
        </p><p>
        <label for="form_mail">Mail </label>
          <input type="text" id="form_mail" name="mail" />
        </p><p>
        <label for="form_tel">Téléphone </label>
          <input type="text" id="form_tel" name="telephone" />
        </p><p>
        <label for="form_address">Adresse  </label>
            <input type="text" id="form_address" name="adresse" />
        </p><p>
        <label for="form_postal_code">Code postal  </label>
            <input type="text" id="form_postal_code" name="codepostal" />
        </p><p>
        <label for="form_city">Ville  </label>
            <input type="text" id="form_city" name="ville" />
        </p><p>
      </fieldset>
    
      <br />
      <fieldset>
      <legend>Votre demande</legend>
      <p>
        <label for="form_sujet">Sujet </label>
            <select id="sujet" name="sujet">
              <option value="AppartementRenoir">Appartement Renoir</option>
              <option value="AppartementSteCatherine">Appartement Ste Catherine</option>
              <option value="StudioMonet">Studio Monet</option>
              <option value="StudioBoudin">Studio Boudin</option>
              <option value="StudioSisley">Studio Sisley</option>
              <option value="Informationsgenerales">Informations générales</option>
            </select>
        </p><p>
        <label for="form_personnes">Nbre de personnes  </label>
            <input type="text" id="form_personnes" name="nbrepersonnes" />
        </p><p>
        <label for="form_arrivee">Date d'arrivée  </label>
            <input type="text" id="form_arrivee" name="arrivee" />
        </p><p>
        <label for="form_depart">Date de départ </label>
            <input type="text" id="form_depart" name="depart" />
        </p>
      </fieldset>
      <br />
        
      <fieldset>
      <legend>Votre message</legend>
      <p>
        <label class="cf_label" style="width: 150px;"></label>
            <textarea id="text_9" class="cf_inputbox" name="infos" cols="30" title="" rows="5"></textarea>
        </p><p>
      </fieldset>
    
      <p>
      <label class="form_label_nostyle">&nbsp;</label>
         <input type="submit" name="submit" />
      </p>
   </form>

</div>


Et le php :
Code:
<?php

if (!empty($_POST['submit']) && $_POST['submit'] == 'submit')

{
   if(!empty($_POST[$nom]) && !empty($_POST[$prenom]) && !empty($_POST[$mail]) && !empty($_POST[$telephone]) && !empty($_POST[$adresse]) && !empty($_POST[$codepostal]) && !empty($_POST [$ville]) && !empty($_POST[$sujet]) && !empty($_POST[$telephone])  && !empty($_POST[$nbrepersonnes]) && !empty($_POST[$arrivee]) && !empty($_POST[$depart]) && !empty($_POST[$infos])){

   extract($_POST);

		$message=str_replace("\'","'",$message);

		$destinataire="madi.line@yahoo.fr";

		$sujet="formulaires contact";

		$message="Une nouvelle réponse \n

		NOM : $nom \n

		PRENOM : $prenom \n

		MAIL : $mail \n

		TELEPHONE : $telephone \n
		
		ADRESSE : $adresse \n
		
		CODE POSTAL : $codepostal \n
		
		VILLE : $ville \n
		
		<strong></strong>

		SUJET : $AppartementRenoir \n

		SUJET : $AppartementSteCatherine \n

		SUJET : $StudioMonet \n

		SUJET : $StudioBoudin \n

		SUJET : $StudioSisley \n
		
		SUJET : $Informationsgenerales \n

		NOMBRE DE PERSONNES : $nbrepersonnes \n

		DATE ARRIVEE : $arrivee \n
		
		DATE DEPART : $depart \n

		LE MESSAGE : $infos";



		$entete="From: $nom \n Reply-To: $Email";

		mail($destinataire,$sujet,$message,$entete);

        header("Location: http://www.saveurs-graphiques.com/essaimenu/merci.html");

   }

   else{ 

        header("Location: http://www.saveurs-graphiques.com/essaimenu/contact.html");

   }

}

?>
 
WRInaute discret
Première chose, transformez votre page html en page contact.php :

Rajoutez ceci tout en haut, pour inclure la page de traitement (je vous laisse mettre le chemin exact) :

Code:
<?php

if (is_file('chemin/envoi.php'))
{
	include 'chemin/envoi.php';
}

?>

Modifiez ceci dans votre formulaire : <form action="contact.php">. Ce qui permettra d'appeler la page courante.

Voici le fichier envoi.php. J'ai juste corrigé quelques trucs, j'ai pas testé. Essayez le et dites moi s'il y a des erreurs.
Il s'agit d'un exemple simple. Je vous conseille de tester la validité du mail ainsi que des autres variables postées.

Code:
<?php
if (!empty($_POST['submit']) && $_POST['submit'] == 'submit')
{
	if(!empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['mail']) && !empty($_POST['telephone']) && !empty($_POST['adresse']) && !empty($_POST['codepostal']) && !empty($_POST ['ville']) && !empty($_POST['sujet']) && !empty($_POST['telephone'])  && !empty($_POST['nbrepersonnes']) && !empty($_POST['arrivee']) && !empty($_POST['depart']) && !empty($_POST['infos']))
	{
		extract($_POST);
		$from = $mail;
		$headers = "From: $nom\r\n"
		."Reply-To: $from\r\n"
		.'Content-Type: text/plain; charset="iso-8859-1"'."\n"
		.'Content-Transfer-Encoding: 8bit';
		$destinataire = 'madi.line@yahoo.fr';
		$sujet = $sujet;
		$message ='Une nouvelle réponse de'.'\n'
		.'NOM : '.$nom.'\n'
		.'PRENOM : '.$prenom .'\n'
		.'MAIL : '.$mail.'\n'
		.'TELEPHONE : '$telephone.'\n'
		.'ADRESSE : '$adresse.'\n'
		.'CODE POSTAL : '.$codepostal.'\n'
		.'VILLE : '.$ville.'\n'
		.'SUJET : '.$sujet.'\n'
		.'NOMBRE DE PERSONNES : '.$nbrepersonnes.'\n'
		.'DATE ARRIVEE : '$arrivee.'\n'
		.'DATE DEPART : '.$depart.'\n'
		.'LE MESSAGE : '.$infos;

		mail($destinataire, $sujet, $message, $headers);
        header("Location: http://www.saveurs-graphiques.com/essaimenu/merci.html");
	}
	else
	{
		$erreur = 'Veuillez remplir tous les champs'; //Integrez un affichage des erreurs a contact.php
	}
}

?>
 
Nouveau WRInaute
Bonjour,
Merci à toi.
Je note bien tes conseils de la page php. J'ai réussi à faire fonctionner le formulaire ainsi voir ci-dessous.
J'avais en effet des erreurs dans le code php et dans le code html j'avais mis "enctype="text/plain" qui a priori donnait un mail vide.
Merci encore !

Lucie

Le code php ajusté :
Code:
<?php
error_reporting(E_ALL);

if (!empty($_POST['submit']) && $_POST['submit'] == 'Envoyer')
{
   if(!empty($_POST[ 'nom' ])
    && !empty($_POST['prenom'])
    && !empty($_POST['mail'])
    && !empty($_POST['telephone'])
    && !empty($_POST['adresse'])
    && !empty($_POST['codepostal'])
    && !empty($_POST ['ville'])
    && !empty($_POST['demande'])
    && !empty($_POST['telephone'])
    && !empty($_POST['nbrepersonnes'])
    && !empty($_POST['arrivee'])
    && !empty($_POST['depart'])
    && !empty($_POST['infos'])) {

        extract($_POST);
        $destinataire="gaucherjp@neuf.fr";

        $sujet="Locations Honfleur : Vous avez un message";

        $message="Nouveau message \n

        NOM : $nom \n

        PRENOM : $prenom \n

        MAIL : $mail \n

        TELEPHONE : $telephone \n

        ADRESSE : $adresse \n

        CODE POSTAL : $codepostal \n

        VILLE : $ville \n

        SUJET : $demande \n

        NOMBRE DE PERSONNES : $nbrepersonnes \n

        DATE ARRIVEE : $arrivee \n

        DATE DEPART : $depart \n

        LE MESSAGE : $infos";



        $entete="Reply-To: $mail \n";

        if(mail($destinataire,$sujet,$message,$entete)) {
            header("Location: http://www.monadresse.fr");
        } else {
   header("Location: http://www.monadresse.fr");
        }
   }
   else{
        header("Location: http://www.monadresse.fr");
   }

}

?>
 
Discussions similaires
Haut