Probleme formulaire de réservation

Fermé
martin.j Messages postés 2 Date d'inscription jeudi 13 décembre 2012 Statut Membre Dernière intervention 14 décembre 2012 - 13 déc. 2012 à 13:10
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 - 19 déc. 2012 à 12:33
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 jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
13 déc. 2012 à 15:06
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 jeudi 13 décembre 2012 Statut Membre Dernière intervention 14 décembre 2012
14 déc. 2012 à 15:30
merci ca fonctionne !
par contre la date et l'heure ne sont pas séparées par un espace... comment faire ?
0
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 jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
19 déc. 2012 à 12:33
$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