Probleme formulaire de réservation

martin.j Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
Zep3k!GnO Messages postés 2025 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Cela fait un moment que je cherche la solution sur internet et divers forum mais je ne trouve pas. Mon problème est que j'ai créer un formulaire ( formulaire récupérer sur internet et modifié ) qui a comme champs : Le nom, l'adresse mail, le numero de telephone, la date et l'heure de reservation. Hors lors de l'envoie du mail, la date et l'heure sélectionnées ne s'affichent pas dans le mail. Donc si vous pouvez m'aider à y voir plus clair et comprendre ce qu'il ne va pas ce serait super !

Voilà le code :

<body>

<?php
/*
********************************************************************************************
CONFIGURATION
********************************************************************************************
*/
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
$destinataire = 'lateinturerie.roubaix@gmail.com';

// copie ? (envoie une copie au visiteur)
$copie = 'oui';

// Action du formulaire (si votre page a des paramètres dans l'URL)
// si cette page est index.php?page=contact alors mettez index.php?page=contact
// sinon, laissez vide
$form_action = '';

// Messages de confirmation du mail
$message_envoye = "Votre message nous est bien parvenu !";
$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";

// Message d'erreur du formulaire
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";

/*
********************************************************************************************
FIN DE LA CONFIGURATION
********************************************************************************************
*/

/*
* cette fonction sert à nettoyer et enregistrer un texte
*/
function Rec($text)
{
$text = htmlspecialchars(trim($text), ENT_QUOTES);
if (1 === get_magic_quotes_gpc())
{
$text = stripslashes($text);
}

$text = nl2br($text);
return $text;
};

/*
* Cette fonction sert à vérifier la syntaxe d'un email
*/
function IsEmail($email)
{
$value = preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\'\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\'\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email);
return (($value === 0) || ($value === false)) ? false : true;
}

// formulaire envoyé, on récupère tous les champs.
$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$objet = (isset($_POST['tel'])) ? Rec($_POST['tel']) : '';
$message = (isset($_POST['date'])) ? Rec($_POST['date']) : '';
$message = (isset($_POST['heure'])) ? Rec($_POST['heure']) : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';


// On va vérifier les variables et l'email ...
$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin

if (isset($_POST['envoi']))
{
if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
{
// les 4 variables sont remplies, on génère puis envoie le mail
$headers = 'From:'.$nom.' <'.$email.'>' . "\r\n";
$mail = " Nom : $nom\n E-mail : $email\n Message : $message \n $date\n $heure\n";

//$headers .= 'Reply-To: '.$email. "\r\n" ;
//$headers .= 'X-Mailer:PHP/'.phpversion();

// envoyer une copie au visiteur ?
if ($copie == 'oui')
{
$cible = $destinataire.','.$email;
}
else
{
$cible = $destinataire;
};

// Remplacement de certains caractères spéciaux
$message = str_replace("'","'",$message);
$message = str_replace("’","'",$message);
$message = str_replace(""",'"',$message);
$message = str_replace('<br>','',$message);
$message = str_replace('<br />','',$message);
$message = str_replace("<","<",$message);
$message = str_replace(">",">",$message);
$message = str_replace("&","&",$message);

// Envoi du mail
if (mail($cible, $objet, $message, $headers))
{
echo '<p>'.$message_envoye.'</p>';
}
else
{
echo '<p>'.$message_non_envoye.'</p>';
};
}
else
{
// une des 3 variables (ou plus) est vide ...
echo '<p>'.$message_formulaire_invalide.'</p>';
$err_formulaire = true;
};
}; // fin du if (!isset($_POST['envoi']))

if (($err_formulaire) || (!isset($_POST['envoi'])))
{
// afficher le formulaire
echo '
<form id="contact" method="post" action="'.$form_action.'">

<p><label for="nom">Nom :</label><input type="text" id="nom" name="nom" value="'.stripslashes($nom).'" tabindex="1" /></p>
<p><label for="email">Email :</label><input type="text" id="email" name="email" value="'.stripslashes($email).'" tabindex="2" /></p>
<p><label for="email">Tel* :</label><input type="text" id="tel" name="tel" value="'.stripslashes($tel).'" tabindex="3" /></p>
<p><label for="email">Date* :</label><input type="text" id="datepicker" name="date" value="'.stripslashes($date).'" tabindex="4" /></p>
<select name="heureExp" id="heure" name="heure" value="'.stripslashes($heure).'" tabindex="5" >
<option value="12H00">12H00</option>
<option value="12H15">12H15</option>
<option value="12H30">12H30</option>
<option value="12H45">12H45</option>
<option value="13H00">13H00</option>
<option value="13H15">13H15</option>
<option value="13H30">13H30</option>
<option value="13H45">13H45</option>
<option value="14H00">14H00</option>
</select>
<p><label for="message">Message :</label><textarea id="message" name="message" tabindex="6" cols="30" rows="8">'.stripslashes($message).'</textarea></p>


<div style="text-align:center;"><input type="submit" id="go" name="envoi" value="Envoyer" /></div>
</form>';
};
?>
</div>
</body>


4 réponses

Zep3k!GnO Messages postés 2025 Date d'inscription   Statut Membre Dernière intervention   200
 
Salut,
tu as plusieurs erreurs :
-1] Dans le HTML, pour la date, tu as mis 2 noms différents : <select name="heureExp" id="heure" name="heure" value="'.stripslashes($heure).'" tabindex="5" >
-2] Dans le PhP, là ou tu récupères tes valeur en post, tu fais set la variable alors que tu veux une concaténation :
// formulaire envoyé, on récupère tous les champs.
$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$objet = (isset($_POST['tel'])) ? Rec($_POST['tel']) : '';
$message = (isset($_POST['date'])) ? Rec($_POST['date']) : '';
$message .= (isset($_POST['heure'])) ? Rec($_POST['heure']) : '';
$message .= (isset($_POST['message'])) ? Rec($_POST['message']) : ''; 
0
martin.j Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
merci ca fonctionne !
par contre la date et l'heure ne sont pas séparées par un espace... comment faire ?
0
geoffreyvp
 
Bonjour,
Deja n'aurait tu pas un probleme pour afficher ton formulaire correctement ?

Car quand je copie ton code dans notepad (en rajoutant les <?php et ?>)
A la ligne 73, t'aurais un probleme avec ton remplacement de caractères
$message = str_replace(""",'"',$message); 


Cet erreur empecherait d'executer le code qui suit, alors remplace ca par
$message = str_replace('"','"',$message); 


Merci de me tenir au courant si il y a du changement
0
Zep3k!GnO Messages postés 2025 Date d'inscription   Statut Membre Dernière intervention   200
 
$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$objet = (isset($_POST['tel'])) ? Rec($_POST['tel']) : '';
$message = (isset($_POST['date'])) ? Rec($_POST['date']).' ' : '';//Ajout d'un espace après la date.
$message .= (isset($_POST['heure'])) ? Rec($_POST['heure']) : '';
$message .= (isset($_POST['message'])) ? Rec($_POST['message']) : ''; 
0