Vous n'êtes pas identifié(e).
Bonjour,
je suis débutant en PHP, et aimerai avoir de l'aide sur mon formulaire de contact pour lequel les mails sont réceptionnés en base de données. voilà j'ai plusieurs champs dans mon formulaire , civilité, nom, émail, téléphone, objet et message, toutes les vérifications du formulaire fonctionne sauf le dernier le champs message (textarea).
si ce champs n'est pas rempli lors de l’envoie je n'arrive pas à afficher un message d'erreur "veuillez rempli le champs message", mais le message est pas envoyer, aussi si le champs est bien rempli le formulaire est envoyé mais là pareil je n'arrive pas à afficher "votre message à bien été envoyé". je pense que c'est à cause du au header: location que je met pour éviter le rafraichissement de la page et éviter les doublons en base de donnée.
Mes questions sont comment vérifier en PHP le champs message(textarea) pour avoir le message d'erreur si ce champs est pas rempli?.
Ma deuxième question porte sur la redirection avec le header: location que je ne sais pas ou mettre car là ou je le met ça marche mais je n'ai plus le message "votre message à bien été envoyé". je sèche complétement ai fouiné sur beaucoup de sites et forums sans trouver la solution.
je m'adresse donc à vous pour avoir votre aide et vous met mon code PHP ci après. en vous remerciant.
page contact.php
Hors ligne
Salu,
change ça :
if(!empty($_POST['Civilite']) && !empty($_POST['Nom']) && !empty($_POST['email']) && !empty($_POST['telephone']) && !empty($_POST['objet']) && !empty($_POST['message'])){
par ça:
if(!empty($_POST['Civilite']) || !empty($_POST['Nom']) || !empty($_POST['email']) || !empty($_POST['telephone']) || !empty($_POST['objet']) || !empty($_POST['message'])){
ce sera peut être mieux comme ça;)
@pluche
Hors ligne
Salut Pierrot,
en effet le fait de changer ça
par ça:
M'affiche bien le message d'erreur "veuillez ajouter votre message" donc vraiment merci, il me reste maintenant le problème de redirection avec le header('location: contact.php'); que je ne sais pas où placé dans le code, car actuellement là ou il est placé cela fonctionne la page est redirigé et sans doublons dans la base de données, mais le soucis c'est que je n'ai pas le message qui averti l’utilisateur que le message à bien été envoyé.
alors si vous pouviez m'aider car je sèche vraiment. merci, je remet le code ci-dessous.
Hors ligne
bonsoir,
je n'arrive toujours pas avec ma redirection avec header car là ou je le met dans le code le rafraichissement de ma page ne ce fait plus ça c'est ok, mais il empêche l'affichage du message "votre message à bien été envoyé" après la soumission du formulaire.
alors si quelqu'un peux m’aidè ce serait vraiment bien, je ne trouve pas la solution, merci beaucoup d'avance....
Hors ligne
de plus, je pense que le mail ne part pas
a++
Hors ligne
bonsoir;
si mon mail est envoyé et je le reçois dans la base de donnée ainsi que dans ma boite mail, la redirection se fait aussi mais je n'ai pas mon message comme quoi 'votre message à bien été envoyé' du fait je pense que mon header est mal placé et là je sèche complétement.
Je remet le code pour que vous puissiez voir ou est placé mon header.
if(!empty($_POST)) {
if(!empty($_POST['Civilite']) || !empty($_POST['Nom']) || !empty($_POST['email']) || !empty($_POST['telephone']) || !empty($_POST['objet']) || !empty($_POST['message'])){
if(strlen($_POST['Nom']) < 2){
$erreur .= '<p class="alert alert-danger" role="alert"><span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> <span class="sr-only"></span> Votre nom doit contenir au moins deux lettres!. </p>';
}elseif(!preg_match('#^0[1-6789][0-9]{8}$#', $_POST['telephone'])) {
$erreur .= '<p class="alert alert-danger" role="alert"><span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> <span class="sr-only"></span> le numero de telephone doit contenir dix chiffres et pas d\'espace!.</p>';
}elseif(!preg_match('#^[a-z0-9.-_]+@[a-z0-9.-_]{2,}\.[a-z]{2,4}$#', $_POST['email'])){
$erreur .= '<p class="alert alert-danger" role="alert"><span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> <span class="sr-only"></span> Veuillez rentrez une adresse mail valide!.</p>';
}elseif(strlen($_POST['message']) == 0){
$erreur .= '<p class="alert alert-danger" role="alert"><span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> <span class="sr-only"></span> Veuillez ajoutez votre message!.</p>';
}else{
$insertion = $pdo->prepare('INSERT INTO contact(Civilite, Nom, email, telephone, objet, message)
VALUES (:Civilite, :Nom, :email, :telephone, :objet, :message)');
$insertion->bindValue(':Civilite', $_POST['Civilite'], PDO::PARAM_STR);
$insertion->bindValue(':Nom', $_POST['Nom'], PDO::PARAM_STR);
$insertion->bindValue(':email', $_POST['email'], PDO::PARAM_STR);
$insertion->bindValue(':telephone', $_POST['telephone'], PDO::PARAM_INT);
$insertion->bindValue(':objet', $_POST['objet'], PDO::PARAM_STR);
$insertion->bindValue(':message', $_POST['message'], PDO::PARAM_STR);
$insertion->execute();
$to = 'mon adresse mail';
$objet = $_POST['objet'];
$message = $_POST['message'];
$headers = 'content-type: text/plain charset=UTF-8'."\r\n";
$headers = 'From: '.$_POST['Nom'].' <'.$_POST['email'].'>'. "\r\n\r\n";
$headers .= 'reply-to:'.$_POST['email']. "\r\n\r\n";
//----------envoie du mail
if(mail($to, $objet, $message, $headers))
{
$erreur .= '<p class="alert alert-success" role="alert"><span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> <span class="sr-only"></span> Votre message à bien été envoyé. !</p>';
$_POST['Civilite'] ='';
$_POST['Nom'] ='';
$_POST['email'] =''; // on vide le formulaire après l'envoie.
$_POST['telephone'] ='';
$_POST['objet'] ='';
$_POST['message'] ='';
header('location: contact.php');
}
}
}
}
?>
si vous pouviez me donner un coup de pouce je sèche complétement. merci bien
Hors ligne
Salut,
Au début, l'affichage du message est prévue *après* la redirection, donc, ça ne fonctionnera pas...
Si tu affiches le message et que tu veux ensuite faire une redirection, alors tu auras une erreur du genre : header already sent...
Pourquoi ne pas rediriger puis afficher sur la nouvelle page "merci, votre message a bien été envoyé" ?
Dernière modification par ViKKKing (29-03-2017 12:33:21)
- Technical skill is mastery of complexity, while creativity is mastery of simplicity.
- Au fil des ans, je ne vieillis pas, je deviens vintage !
Hors ligne