[RESOLU] Ajout d'un champ téléphone dans un formulaire

all
Petit nouveau ! | 8 Messages

13 févr. 2016, 17:20

Bonjour,

J'ai trouvé un formulaire qui me convient parfaitement et auquels j'aimerais ajouter un champ téléphone et qui s'afficherait en début de message. Je cherche depuis ce matin et je n'y arrive pas du tout. Merci pour votre aide. Voici le formulaire :

<?php
if(isset($_POST['email']) and isset($_POST['sujet']) and isset($_POST['message']))
{
$destinataire = '[email protected]';
$email = htmlentities($_POST['email']);
if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',str_replace('&','&',$email)))
{
$sujet = 'Contact: '.stripslashes($_POST['sujet']);
$message = stripslashes($_POST['message']);
$headers = "From: <".$email.">\n";
$headers .= "Reply-To: ".$email."\n";
$headers .= "Content-Type: text/plain; charset=\"iso-8859-1\"";
if(mail($destinataire,$sujet,$message,$headers))
{
echo "<strong>Votre message a bien &eacute;t&eacute; envoy&eacute;.</strong>";
}
else
{
echo "<strong style=\"color:#ff0000;\">Une erreur c'est produite lors de l'envois du message.</strong>";
}
}
else
{
echo "<strong style=\"color:#ff0000;\">L'email que vous avez entr&eacute; est invalide.</strong>";
}
}
else
{
?>
<form action="" method="post">
<fieldset>
<legend>Formulaire de contact</legend>
<label for="email" style="display:inline-block;width:100px;"><strong>Votre Email:</strong></label> <input type="text" name="email" id="email" /><br />
<label for="sujet" style="display:inline-block;width:100px;"><strong>Sujet:</strong></label> <input type="text" name="sujet" id="sujet" /><br />
<label for="message"><strong>Message:</strong></label><br />
<textarea cols="70" rows="4" name="message" id="message"></textarea><br />
<input type="submit" value="Envoyer" />
</fieldset>
</form>
<?php
}
?>

Eléphant du PHP | 243 Messages

14 févr. 2016, 14:45

Bonjour et bienvenue sur le forum.
Il faudra tout d'abord gérer la partie html en ajoute un nouvel input pour accueillir le numéro de téléphone à envoyer.
Voici un guide sur l'utilisation des inputs : http://www.w3schools.com/html/html_form_input_types.asp
Du côté du mail, il faut ensuite récupérer la valeur de ce nouvel input et de l'intégrer dans le message.
Pour afficher le champ téléphone avant le message, il suffit de remplacer
$message = stripslashes($_POST['message']);
par
$message = stripslashes($_POST['telephone']);
$message += stripslashes($_POST['message']);
Pour que l'exemple du dessus fonctionne, il faut bien sûr que le nouvel input ait un argument name="telephone"
"Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent"
~~Lorenzo Strigini

all
Petit nouveau ! | 8 Messages

14 févr. 2016, 16:13

Merci pour la réponse. Alors j'ai bien le tel qui s'affiche dans le corps du message, mais j'ai pas le message. Si je déplace le + dans la ligne du téléphone, j'ai le message mais pas le numéro.

all
Petit nouveau ! | 8 Messages

14 févr. 2016, 16:53

Si je remplace le + par un ., j'ai le tel et le message ensemble, mais les deux s'affichent sur la même ligne et sans séparation. Existe-t-il une fonction pour mettre le message à la ligne ?

Mammouth du PHP | 2703 Messages

14 févr. 2016, 17:54

$message = stripslashes($_POST['telephone']). "\n".stripslashes($_POST['message']);

all
Petit nouveau ! | 8 Messages

14 févr. 2016, 18:25

Ça n'a aucun effet.

all
Petit nouveau ! | 8 Messages

14 févr. 2016, 18:56

C'est bon, j'y suis arrivé.

all
Petit nouveau ! | 8 Messages

14 févr. 2016, 19:04

Donc remplacer :

$message = stripslashes($_POST['message']);

Par...

$message = 'Numéro de téléphone : '.stripslashes($_POST['telephone'])."<br>";
$message .= 'Message : '.stripslashes($_POST['message']);

Puis remplacer :

$headers .= "Content-Type: text/plain; charset=\"iso-8859-1\"";

Par...

$headers .= 'Content-type: text/html; charset=utf-8' . "\r";

Et pour l'input :

<label for="telephone" style="display:inline-block;width:100px;"><strong>telephone:</strong></label> <input type="text" name="telephone" id="telephone" /><br />

Merci beaucoup pour votre aide.

all
Petit nouveau ! | 8 Messages

14 févr. 2016, 19:50

Par contre, y a un autre soucis. Quand on tape un message et que l'on va à la ligne, le resultat dans la boîte mail et que rien est à la ligne, genre on envoie :

Bonjour,

T'es où ?

À la reception, c'est écrit :

Bonjour, T'es où ?

Eléphant du PHP | 243 Messages

15 févr. 2016, 13:51

Erreur de ma part, il faut utiliser un '.' et non un '+' pour la concaténation..
Pour le saut de ligne, regarde cette méthode php : http://php.net/manual/en/function.nl2br.php
"Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent"
~~Lorenzo Strigini

all
Petit nouveau ! | 8 Messages

15 févr. 2016, 16:20

Cool, merci.
Ce qui fait :

$message .= nl2br(stripslashes($_POST['message']));