PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 21-03-2017 16:45:47

sidiki
Membre
Inscription : 27-02-2017
Messages : 4

aide formulaire de contact en php verif du textarea et redirrection.

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


<?php
$erreur = ''; // message d'erreur si tous les champs du formulaire ne sont pas remplient.
 
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']) == ''){
 
            $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();
 
          header('location: contact.php');
 
            $to = '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))
          {
 
          $_POST['Civilite'] ='';
          $_POST['Nom'] ='';
          $_POST['email'] ='';
          $_POST['telephone'] ='';
          $_POST['objet'] ='';
          $_POST['message'] ='';
 
          $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>';
       
          }else{
 
          $erreur .= '<p class="alert alert-danger" role="alert"><span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> <span class="sr-only"></span> Merci de remplir Tous les champs </p>';
 
 
          }
        }
      }
    }
?>
 

Hors ligne

#2 21-03-2017 17:13:49

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : aide formulaire de contact en php verif du textarea et redirrection.

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

#3 21-03-2017 21:23:19

sidiki
Membre
Inscription : 27-02-2017
Messages : 4

Re : aide formulaire de contact en php verif du textarea et redirrection.

Salut Pierrot,


en effet le fait de changer ç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'])){
 

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. 

page contact.php

<?php
$erreur = ''; // message d'erreur si tous les champs du formulaire ne sont pas remplient.
 
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']) == ''){
 
            $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();
 
          header('location: contact.php');
 
            $to = '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))
          {
 
          $_POST['Civilite'] ='';
          $_POST['Nom'] ='';
          $_POST['email'] ='';
          $_POST['telephone'] ='';
          $_POST['objet'] ='';
          $_POST['message'] ='';
 
          $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>';
       
          }else{
 
          $erreur .= '<p class="alert alert-danger" role="alert"><span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> <span class="sr-only"></span> Merci de remplir Tous les champs </p>';
 
 
          }
        }
      }
    }
?>
 
 

Hors ligne

#4 28-03-2017 00:13:32

sidiki
Membre
Inscription : 27-02-2017
Messages : 4

Re : aide formulaire de contact en php verif du textarea et redirrection.

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

#5 28-03-2017 16:55:18

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : aide formulaire de contact en php verif du textarea et redirrection.

de plus, je pense que le mail ne part pas wink
a++

Hors ligne

#6 28-03-2017 21:07:19

sidiki
Membre
Inscription : 27-02-2017
Messages : 4

Re : aide formulaire de contact en php verif du textarea et redirrection.

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.

Page contact.php

<?php
$erreur = ''; // message d'erreur si tous les champs du formulaire ne sont pas remplient.

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

#7 29-03-2017 12:31:58

ViKKKing
Membre
Inscription : 29-03-2017
Messages : 12

Re : aide formulaire de contact en php verif du textarea et redirrection.

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

Pied de page des forums