Problème avec mes conditions en php

Résolu

Bonjour a tous

cela fait deux jours que je me bat avec mes conditions en php dans mon bon de commande

l'utilisateur peux choisir entre plusieurs modes de livraison pour chaque pays 

par exemple pour la Belgique

(POSTE-COLIS-BELGIQUE_point)5.50 euro(s)

(POSTE-ENVELLOPPE-belgique)1 euro(s)')
(POSTE-COLIS-BELGIQUE)6.50 euro(s)

(MONDIAL-RELAY-BELGIQUE)3 euro(s)

et ensuite il doit entrer ses coordonnées complètes et notamment son pays

Je souhaite afficher un message d'erreur lorsqu'il choisit par exemple un mode de livraison en belgique et que le pays de son adresse n'est pas belgique 

j'applique donc cette condition qui fonctionne

//message alertes si on choisit livraison poste belgique et que le pays n'est pas belgique 
else if ((($_POST["livraison"]=='(POSTE-COLIS-BELGIQUE_point)5.50 euro(s)') 
or ($_POST["livraison"]=='(POSTE-ENVELLOPPE-belgique)1 euro(s)')
or ($_POST["livraison"]=='(POSTE-COLIS-BELGIQUE)6.50 euro(s)'))
&&($_POST["pays"]<>"Belgique")  )
{echo "0-18"; }

ensuite je veux vérifier que si il choisit mondial relay

que le pays de mondial relay ou le pays de son adresse  est bien Belgique 

donc j'applique cette condition 

//traitement envois mondial relay on controle le pays de poste et de mondial relay par au choix du mode de livraison 
//si on choisit mondial relay belgique et que le pays de mondial relay ou le pays postal pas de belgique
else if (($_POST["livraison"]=='(MONDIAL-RELAY-BELGIQUE)3 euro(s)') 
&&($_POST["pays"]<>"Belgique") 
or($_POST["cb_PAYS"]<>"BE") )
{echo "0-17"; }

Lorsque je mets ces deux conditions la première ne fonctionne plus mais la deuxième oui

c'est a dire pour la première condition 

si je choisi un mode de livraison par poste et que le pays n'est pas Belgique cela me retourne l'erreur echo 0-18 pour la première condition ce qui est bon 

par contre si la condition est vraie cela me retourne l'erreur 17

toujours pour la condition 1

j'en perds mon latin 

25 réponses

Résumé de la discussion

Problématique technique : dans un bon de commande en PHP, il faut empêcher qu'un mode de livraison belge soit validé lorsque le pays indiqué n'est pas Belgique et afficher un message d'erreur. Plusieurs points discutés portent sur les conditions vérifiant les livraisons spécifiques (POSTE-COLIS-BELGIQUE, MONDIAL-RELAY-BELGIQUE) et sur l'utilisation correcte des opérateurs logiques et des valeurs des pays. Des échanges révèlent qu'un dépassement des conditions peut provenir d'un code HTML échappant les opérateurs (&&), d'un défaut de var_dump sur une variable inexistante et d'un défaut de traitement du switch. Des corrections évoquées incluent la suppression du cas default du switch et l'amélioration de la validation des données, afin de déclencher le message d'erreur au bon moment.

Bobot (l’IA à votre service)
  1. Modérateur

    Bonjour,

    Il faudrait qu'on voit ton bloc IF  COMPLET ...   

    Et puis.. que tu fasses des VAR_DUMP($_POST);   ( avant le IF ) pour savoir ce que tes variables contiennent exactement...


    1. Contributeur

      bonjour,

      Si tu ne connais pas bien la priorité des opérateurs logiques, il est recommandé de toujours utiliser des parenthèses.  Es-tu certain de bien comprendre comment sera évalué ceci?

      (condition1 
      && condition2 
      or condition3 )
      1. Modérateur

        Bon..

        Sacré usine à gaz ton code...

        Bref..

        Déjà ..   faire un !isset et en plus vérifier que la variable n'est pas vide .. revient simplement à faire un empty

        (déjà dit non ? )

        En plus, il serait plus propre de récupérer PROPREMENT les variables AVANT de les utiliser.

        Tu peux aussi séparer un peu tes bloc IF ..  

        Et puis, ça ne sert à rien de mettre des parenthèses partout n'importe comment...

        En gros, ton code pourrait ressembler à ça

        <?php
        
        error_reporting(E_ALL);
        // Passez la valeur ci-dessous de 0 à 1 pour afficher les erreurs
        ini_set("display_errors", 1);
        
        // Saisissez ici l'adresse mail du destinataire
        $destinataire = "***@***";
        var_dump($detail_livraison);
        
        //on récupère PROPREMENT les variables AVANT de les utiliser
        $nom = !empty($_POST["nom"]) ? trim($_POST["nom"]) : NULL;
        $prenom = !empty($_POST["prenom"]) ? trim($_POST["prenom"]) : NULL;
        $adresse = !empty($_POST["adresse"]) ? trim($_POST["adresse"]) : NULL;
        $cp = !empty($_POST["cp"]) ? trim($_POST["cp"]) : NULL;
        $ville = !empty($_POST["ville"]) ? trim($_POST["ville"]) : NULL;
        $pays = !empty($_POST["pays"]) ? trim($_POST["pays"]) : NULL;
        $email = !empty($_POST["email"]) ? trim($_POST["email"]) : NULL;
        $cb_CP = !empty($_POST["cb_CP"]) ? trim($_POST["cb_CP"]) : NULL;
        $cb_PAYS = !empty($_POST["cb_PAYS"]) ? trim($_POST["cb_PAYS"]) : NULL;
        $detail_livraison = !empty($_POST["detail_livraison"]) ? trim($_POST["detail_livraison"]) : NULL;
        $total_qte_bas = isset($_POST["total_qte_bas"]) ? trim($_POST["total_qte_bas"]) : 0;
        $commande = isset($_POST["commande"]) ? trim($_POST["commande"]) : NULL;
        
        //on initialise quelques variables pour tester
        $date = date('Y/m/d');
        $b = $cp;
        $c = $cb_CP;
        $country = $pays;
        
        //debut des messages d'alertes
        //si quanditee est egal a 0
        if ($total_qte_bas == '0') {
          echo "0-18";
        }
        
        //si le choix du mode de livraison est le champ cache on affiche une alerte
        else if ($detail_livraison == '() euro(s)') {
          echo "0-15";
        }
        
        //on teste les donnees postale
        else if (empty($nom)) {
          echo "0-1";
        } else if (empty($prenom)) {
          echo "0-2";
        } else if (empty($adresse)) {
          echo "0-3";
        } else if (empty($cp)) {
          echo "0-4";
        } else if (empty($ville)) {
          echo "0-5";
        } else if (empty($pays)) {
          echo "0-6";
        } else if (empty($email)) {
          echo "0-7";
        } else if (!filter_var(($email), FILTER_VALIDATE_EMAIL)) {
          echo "0-10";
        }
        
        //on teste afin de savoir si c'est bien un code postal dans le champs adresse de chaque pays
        else if ($b <> filter_var($b, FILTER_VALIDATE_INT)) {
          echo "0-11";
        }
        
        //test de l'adresse il doit y avoir un numero pour tout les pays chaque pays
        elseif (!preg_match('#[\d ]#', ($adresse))) {
          echo "0-13";
        }
        
        //message erreur du choix du pays on doit absolument entrer un des pays autorises
        else if (($country <> "Belgique") && ($country <> "Luxembourg") && ($country <> "France") && ($country <> "Pays-bas")) {
          echo "0-16";
        }
        
        
        /**
         * GESTION DE LA LIVRAISON
         */
        echo "<pre>";
        var_dump($_POST);
        echo "</pre>";
        //on a pas d'autres choix pour vérifier la valeur du champ que de se servir du code postal puisque les champs sont deja preremplis avec les donnees de mondial relay
        //message alertes si on choisit mondial relay france on afficche une erreur si code postal pas correct
        if ($detail_livraison == '(MONDIAL-RELAY-BELGIQUE)3 euro(s)' && $c <> filter_var($c, FILTER_VALIDATE_INT)) {
          echo "0-8";
        }
        
        //message alertes si on choisit mondial relay france on affiche une erreur si code postal pas correct
        else if ($detail_livraison == '(mondial relay-FRANCE)4 euro(s)' && $c <> filter_var($c, FILTER_VALIDATE_INT)) {
          echo "0-8";
        }
        
        //message alertes si on choisit mondial relay luxembourg on affiche une erreur si code postal pas correct
        else if (($detail_livraison == '(mondial relay-LUXEMBOURG)3 euro(s)') && ($c <> filter_var($c, FILTER_VALIDATE_INT))) {
          echo "0-8";
        }
        
        //message alertes si on choisit mondial relay PAYS-BAS on affiche une erreur si code postal pas correct
        else if (($detail_livraison == '(MONDIAL-RELAY-PAYS-BAS)5 euro(s)') && ($c <> filter_var($c, FILTER_VALIDATE_INT))) {
          echo "0-8";
        }
        
        //message alertes si on choisit poste colis belgique on affiche une erreur si il manque un champs
        else if ($detail_livraison == '(POSTE-COLIS-BELGIQUE_point)5.50 euro(s)' && ( empty($_POST["adressepoint"]) || empty($_POST["cppoint"]) || empty($_POST["villepoint"]) )) {
          echo "0-9";
        }
        
        //message alertes si on choisit livraison poste belgique et que le pays n'est pas belgique
        else if ($detail_livraison == '(POSTE-COLIS-BELGIQUE_point)5.50 euro(s)' || ($detail_livraison == '(POSTE-ENVELLOPPE-belgique)1 euro(s)') || ($detail_livraison == '(POSTE-COLIS-BELGIQUE)6.50 euro(s)') && $pays <> "Belgique") {
          echo "0-17";
        }
        
        //si on choisit mondial relay belgique et que le pays de mondial relay ou le pays postal pas de belgique
        else if ($detail_livraison == '(MONDIAL-RELAY-BELGIQUE)3 euro(s)' && $pays !== "Belgique" || $cb_PAYS <> "BE") {
          echo "0-17";
        }
        
        //message alertes si on choisit livraison poste luxembourg et que le pays n'est pas luxembourg
        else if ($detail_livraison == '(POSTE-ENVELLOPPE-LUXEMBOURG)1.50 euro(s)' && $pays <> "Luxembourg") {
          echo "0-17";
        }
        
        //si on choisit mondial relay luxembourg et que le pays de mondial relay ou le pays postal pas de luxembourg
        else if ($detail_livraison == '(mondial relay-LUXEMBOURG)3 euro(s)' && $pays <> "Luxembourg"
                or $cb_PAYS <> "LU") {
          echo "0-17";
        }
        
        //message alertes si on choisit livraison poste france et que le pays n'est pas france
        else if ($detail_livraison == '(POSTE-ENVELLOPPE-FRANCE)2 euro(s)' && $pays <> "France") {
          echo "0-17";
        }
        
        //si on choisit mondial relay france et que le pays de mondial relay ou le pays postal pas de france
        else if ($detail_livraison == '(mondial relay-FRANCE)4 euro(s)' && $pays <> "France"
                or $cb_PAYS <> "FR") {
          echo "0-17";
        }
        
        //message alertes si on choisit livraison poste pays-bas et que le pays n'est pas pays-bas
        else if ($detail_livraison == '(POSTE-ENVELLOPPE-PAYS-BAS)2 euro(s)' && $pays <> "Pays-bas") {
          echo "0-17";
        }
        
        //si on choisit mondial relay pays-bas et que le pays de mondial relay ou le pays postal pas de pays-bas
        else if ($detail_livraison == '(MONDIAL-RELAY-PAYS-BAS)5 euro(s)' && $pays <> "Pays-bas"
                or $cb_PAYS <> "NL") {
          echo "0-17";
        }
        
        
        // AUTRE ERREUR
        //message alertes si autre probleme
        if (!$commande) {
          echo "0-21";
        }  // code d'erreur si c'est pas bon pour la commande

        Il semble aussi que tu avais encore un souci de priorisation de tes tests. ( des parenthèses mal placées.. )


        1. Modérateur

          yg_be .. pas besoin de ce que tu lui demandes .. toutes les infos nécessaires se trouves dans la console ..

          bref,

          Voici à quoi pourrait ressembler ton code :

          <?php
          
          error_reporting(E_ALL);
          // Passez la valeur ci-dessous de 0 à 1 pour afficher les erreurs
          ini_set("display_errors", 1);
          
          // Saisissez ici l'adresse mail du destinataire
          $destinataire = "***@***";
          
          //on récupère PROPREMENT les variables AVANT de les utiliser
          $nom = !empty($_POST["nom"]) ? trim($_POST["nom"]) : NULL;
          $prenom = !empty($_POST["prenom"]) ? trim($_POST["prenom"]) : NULL;
          $adresse = !empty($_POST["adresse"]) ? trim($_POST["adresse"]) : NULL;
          $cp = !empty($_POST["cp"]) ? trim($_POST["cp"]) : NULL;
          $ville = !empty($_POST["ville"]) ? trim($_POST["ville"]) : NULL;
          $pays = !empty($_POST["pays"]) ? trim($_POST["pays"]) : NULL;
          $email = !empty($_POST["email"]) ? trim($_POST["email"]) : NULL;
          $cb_CP = !empty($_POST["cb_CP"]) ? trim($_POST["cb_CP"]) : NULL;
          $cb_PAYS = !empty($_POST["cb_PAYS"]) ? trim($_POST["cb_PAYS"]) : NULL;
          $adressepoint = !empty($_POST["adressepoint"]) ? trim($_POST["adressepoint"]) : NULL;
          $cppoint = !empty($_POST["cppoint"]) ? trim($_POST["cppoint"]) : NULL;
          $villepoint = !empty($_POST["villepoint"]) ? trim($_POST["villepoint"]) : NULL;
          
          $detail_livraison = !empty($_POST["detail_livraison"]) ? trim($_POST["detail_livraison"]) : NULL;
          $total_qte_bas = isset($_POST["total_qte_bas"]) ? trim($_POST["total_qte_bas"]) : 0;
          $commande = isset($_POST["commande"]) ? trim($_POST["commande"]) : NULL;
          
          $error=null; //on inialise à null la variable error
          
          //on initialise quelques variables pour tester
          $date = date('Y/m/d');
          $b = $cp;
          $c = $cb_CP;
          $country = $pays;
          
          
          //debut des messages d'alertes
          //si quanditee est egal a 0
          if ($total_qte_bas == '0') {
            $error = "0-18";
          } else if ($detail_livraison == '() euro(s)') {
            //si le choix du mode de livraison est le champ cache on affiche une alerte
            $error = "0-15";
          }else if (empty($nom)) {
            $error = "0-1";
          } else if (empty($prenom)) {
            $error = "0-2";
          } else if (empty($adresse)) {
            $error = "0-3";
          } else if (empty($cp)) {
            $error = "0-4";
          } else if (empty($ville)) {
            $error = "0-5";
          } else if (empty($pays)) {
            $error = "0-6";
          } else if (empty($email)) {
            $error = "0-7";
          } else if (!filter_var(($email), FILTER_VALIDATE_EMAIL)) {
            $error = "0-10";
          }else if ($b != filter_var($b, FILTER_VALIDATE_INT)) {
            //on teste afin de savoir si c'est bien un code postal dans le champs adresse de chaque pays
            $error = "0-11";
          }elseif (!preg_match('#[\d ]#', ($adresse))) {
            //test de l'adresse il doit y avoir un numero pour tout les pays chaque pays
            $error = "0-13";
          }else if ( $country != "Belgique"  && $country != "Luxembourg"  &&  $country != "France"  &&  $country != "Pays-bas" ) {
            //message erreur du choix du pays on doit absolument entrer un des pays autorises
            $error = "0-16";
          }
          
          
          /**
           * GESTION DE LA LIVRAISON
           */
          
          
          switch($detail_livraison ){
            case '(MONDIAL-RELAY-BELGIQUE)3 euro(s)':
              if(!filter_var($c, FILTER_VALIDATE_INT)){
                $error = "0-8";
              }
              if($pays !== "Belgique" || $cb_PAYS != "BE"){
                  $error = "0-17";
              }
              break;
            case '(mondial relay-FRANCE)4 euro(s)':
              if(!filter_var($c, FILTER_VALIDATE_INT)){
                $error = "0-8";
              }
              break;
            case '(mondial relay-LUXEMBOURG)3 euro(s)':
              if(!filter_var($c, FILTER_VALIDATE_INT)){
                $error = "0-8";
              }
              break;
            case '(MONDIAL-RELAY-PAYS-BAS)5 euro(s)':
              if(!filter_var($c, FILTER_VALIDATE_INT)){
                $error = "0-8";
              }
              if($pays != "Pays-bas" || $cb_PAYS != "NL") {
                $error = "0-17";
              }
              break;
            case '(POSTE-ENVELLOPPE-PAYS-BAS)2 euro(s)':
              if( $pays != "Pays-bas") {
                $error = "0-17";
              }
              break;
          
            case '(POSTE-COLIS-BELGIQUE_point)5.50 euro(s)':
              if($pays != "Belgique") {
                $error = "0-17";
              }
              if( !$adressepoint || !$cppoint || !$villepoint) {
                $error = "0-9";
              }
              break;
            case '(POSTE-ENVELLOPPE-belgique)1 euro(s)':  
            case '(POSTE-COLIS-BELGIQUE)6.50 euro(s)':
              if($pays != "Belgique") {
                $error = "0-17";
              }
              break;
            case '(POSTE-ENVELLOPPE-LUXEMBOURG)1.50 euro(s)':
              if($pays != "Luxembourg") {
                $error = "0-17";
              }
              break;
            case '(mondial relay-LUXEMBOURG)3 euro(s)':
              if($pays != "Luxembourg" || $cb_PAYS != "LU") {
                $error = "0-17";
              }
              break;
            case '(POSTE-ENVELLOPPE-FRANCE)2 euro(s)':
              if($pays != "France") {
                $error = "0-17";
              }
              break;
            case '(POSTE-ENVELLOPPE-FRANCE)4 euro(s)':
              if($pays != "France" ||  $cb_PAYS != "FR") {
                $error = "0-17";
              }
              break;
            default:
              //aucune erreur detectée
              $error = "Aucune erreur detectée "; //tu pourras retirer ce $error = quand tout marchera bien
          }
          
          // AUTRE ERREUR
          //message alertes si autre probleme
          if (!$commande) {
            $error = "0-21";
          }  // code d'erreur si c'est pas bon pour la commande
          
          
          
          //une fois tous les tests terminés..
          // tu peux faire le echo de ton erreur si il y en a une... ou faire le reste de ton code
          
          if(!empty($error)){
            echo $error;
          }else{
            //ici ton insert en bdd et ton envoi de mail
            
          }

          1. bonjour 

            Merci pour les réponses

            Lorsque je fais un var_dump de post rien ne s'affiche a mon écran

            Surement a cause des messages modals que j'ai sur la page php qui servent pour la gestion des erreurs  

            Ne devrais pas enlever ces appels aux messages d'erreur sur ma page mail.php

            voici donc le bloc du if avec les conditions pour mondial relay et la poste

            //message alertes si on choisit livraison poste belgique et que le pays n'est pas belgique
            if ($_POST["detail_livraison"]=='(POSTE-COLIS-BELGIQUE_point)5.50 euro(s)'
            or ($_POST["detail_livraison"]=='(POSTE-ENVELLOPPE-belgique)1 euro(s)')
            or ($_POST["detail_livraison"]=='(POSTE-COLIS-BELGIQUE)6.50 euro(s)')
            && $_POST["pays"]<>"Belgique")
            {echo "0-17"; }
            
            //si on choisit mondial relay belgique et que le pays de mondial relay ou le pays postal pas de belgique
            else if ($_POST["detail_livraison"]=='(MONDIAL-RELAY-BELGIQUE)3 euro(s)'
            && $_POST["pays"]!=="Belgique" 
            or $_POST["cb_PAYS"]<>"BE")
            {echo "0-17"; }
            
            //message alertes si on choisit livraison poste luxembourge et que le pays n'est pas luxembourg 
            else if ($_POST["detail_livraison"]=='(POSTE-ENVELLOPPE-LUXEMBOURG)1.50 euro(s)'
            && $_POST["pays"]<>"Luxembourg")  
            {echo "0-17"; }
            
            //si on choisit mondial relay luxembourg et que le pays de mondial relay ou le pays postal pas de luxembourg
            else if ($_POST["detail_livraison"]=='(mondial relay-LUXEMBOURG)3 euro(s)' 
            && $_POST["pays"]<>"Luxembourg" 
            or $_POST["cb_PAYS"]<>"LU")
            {echo "0-17"; }
            
            //message alertes si on choisit livraison poste france et que le pays n'est pas france 
            else if ($_POST["detail_livraison"] =='(POSTE-ENVELLOPPE-FRANCE)2 euro(s)'
            &&$_POST["pays"]<>"France")  
            {echo "0-17"; }
            
            //si on choisit mondial relay france et que le pays de mondial relay ou le pays postal pas de france
            else if ($_POST["detail_livraison"] =='(mondial relay-FRANCE)4 euro(s)' 
            && $_POST["pays"]<>"France" 
            or $_POST["cb_PAYS"]<>"FR" )
            {echo "0-17"; }
            
            //message alertes si on choisit livraison poste pays-bas et que le pays n'est pas pays-bas 
            else if ($_POST["detail_livraison"]=='(POSTE-ENVELLOPPE-PAYS-BAS)2 euro(s)'
            && $_POST["pays"]<>"Pays-bas")
            {echo "0-17"; }
            
            //si on choisit mondial relay pays-bas et que le pays de mondial relay ou le pays postal pas de pays-bas
            else if ($_POST["detail_livraison"]=='(MONDIAL-RELAY-PAYS-BAS)5 euro(s)'
            && $_POST["pays"]<>"Pays-bas"
            or $_POST["cb_PAYS"]<>"NL" )
            {echo "0-17"; }

            Voila j'ai corriger suivant l'exemple de yg_be que je remercie au passage ainsi que jordane 

            1. Modérateur

              Je ne vois pas le rapport entre les fenêtres modales et le fait que le debug ne s'affiche pas.... Je serai curieux de savoir où est-ce que tu l'as placé.

              Et donc, vu que tu dis avoir modifié ton code en appliquant la suggestion d'YG.. est-ce que c'est résolu ? Si oui il faut mettre la discussion en tant que telle...

            2. Contributeur

              Je ne pense pas que tu as compris ma suggestion.
              Je suggérais d'ajouter des parenthèses, pour s'assurer que les opérations logiques soient faites dans le bon ordre.

              .

              Pour les opérateurs arithmétiques + et *, pour contrôler l'ordre des opération, tu peux ajouter des parenthèses.
              Par exemple, au lieu d'écrire 5 + 3 * 2, tu écrirais (5 + 3) * 2 ou 5 + ( 3 * 2 ).  Le résultat est soit 16, soit 11, il est important de s'assurer d'obtenir le bon résultat.

              .

              Eh bien, il est prudent de faire de même avec les opérateurs logiques AND et OR.
              Au lieu d'écrire 

              condition1 
              and condition2 
              or condition3

              Il est prudent d'écrire une des deux formes suivantes, suivant le résultat attendu:

              (condition1 
              and condition2 )
              or condition3 
              
              condition1 
              and ( condition2 
              or condition3) 
          2. Merci pour l'aide

            euhh c'est pour cela que je pose la question 

            voici toutes les conditions et ou j'ai placé le message de debug

            <?php 
            error_reporting(E_ALL);
            // Passez la valeur ci-dessous de 0 à 1 pour afficher les erreurs
            ini_set("display_errors", 1);
            
            //on initialise quelques variables pour tester
            $date=date('Y/m/d'); 
            $b = ($_POST["cp"]);
            $c = ($_POST["cb_CP"]);
            $country=($_POST["pays"]);
            
            // Saisissez ici l'adresse mail du destinataire
            $destinataire = "***@***";
            var_dump($_POST["detail_livraison"]);
            
            //debut des messages d'alertes
            //si quanditee est egal a 0
             if($_POST["total_qte_bas"] =='0')
            { echo "0-18"; } 
            
            //si le choix du mode de livraison est le champ cache on affiche une alerte
            else if ($_POST["detail_livraison"] =='() euro(s)')
            { echo "0-15"; } 
            
            //on teste les donnees postale
            else if (!isset($_POST["nom"]) || ($_POST["nom"]=="")) 
            { echo "0-1"; } 
            else if (!isset($_POST["prenom"]) || ($_POST["prenom"]==""))
            {echo "0-2"; } 
            else if (!isset($_POST["adresse"]) || ($_POST["adresse"]=="")) 
            {echo "0-3"; } 
            else if (!isset($_POST["cp"]) || ($_POST["cp"]=="")) 
            {echo "0-4"; } 
            else if (!isset($_POST["ville"]) || ($_POST["ville"]==""))
            {echo "0-5"; } 
            else if (!isset($_POST["pays"]) || ($_POST["pays"]==""))
            {echo "0-6"; } 
            else if (!isset ($_POST["email"]) || ($_POST["email"]=="")) 
            {echo "0-7"; } 
             else if (!filter_var(($_POST["email"]), FILTER_VALIDATE_EMAIL))
            {  echo "0-10"; }
            
            //on teste afin de savoir si c'est bien un code postal dans le champs adresse de chaque pays
            else if($b <> filter_var($b, FILTER_VALIDATE_INT))
            	{    echo "0-11"; }
            
            //test de l'adresse il doit y avoir un numero pour tout les pays chaque pays
            elseif(!preg_match('#[\d ]#',($_POST["adresse"]) ))
            {echo "0-13"; }
            
            //message erreur du choix du pays on doit absolument entrer un des pays autorises
              else if ( ($country <> "Belgique") && ($country <> "Luxembourg") && ($country <> "France") && ($country <> "Pays-bas") )
              {echo "0-16"; }
            
            //on a pas d'autres choix pour vérifier la valeur du champ que de se servir du code postal puisque les champs sont deja preremplis avec les donnees de mondial relay
            //message alertes si on choisit mondial relay france on afficche une erreur si code postal pas correct
            else if (($_POST["detail_livraison"] =='(MONDIAL-RELAY-BELGIQUE)3 euro(s)') 
            && $c <> filter_var($c, FILTER_VALIDATE_INT)) 
            {    echo "0-8"; }
            
            //message alertes si on choisit mondial relay france on affiche une erreur si code postal pas correct
            else if (($_POST["detail_livraison"] =='(mondial relay-FRANCE)4 euro(s)') 
            &&($c <> filter_var($c, FILTER_VALIDATE_INT))) 
            {    echo "0-8"; }
            
            //message alertes si on choisit mondial relay luxembourg on affiche une erreur si code postal pas correct
            else if (($_POST["detail_livraison"] =='(mondial relay-LUXEMBOURG)3 euro(s)') 
            &&($c <> filter_var($c, FILTER_VALIDATE_INT))) 
            {    echo "0-8"; }
            
            //message alertes si on choisit mondial relay PAYS-BAS on affiche une erreur si code postal pas correct
            else if (($_POST["detail_livraison"] =='(MONDIAL-RELAY-PAYS-BAS)5 euro(s)') 
            &&($c <> filter_var($c, FILTER_VALIDATE_INT))) 
            {    echo "0-8"; }
            
            //message alertes si on choisit poste colis belgique on affiche une erreur si il manque un champs
            else if (($_POST["detail_livraison"] =='(POSTE-COLIS-BELGIQUE_point)5.50 euro(s)')
            &&((!isset($_POST["adressepoint"]) || ($_POST["adressepoint"]=="")) 
            or (!isset($_POST["cppoint"]) || ($_POST["cppoint"]=="")) 
            or (!isset($_POST["villepoint"]) || ($_POST["villepoint"]=="")) ))
            {echo "0-9"; } 
            
            //message alertes si on choisit livraison poste belgique et que le pays n'est pas belgique
            else if ($_POST["detail_livraison"]=='(POSTE-COLIS-BELGIQUE_point)5.50 euro(s)'
            or ($_POST["detail_livraison"]=='(POSTE-ENVELLOPPE-belgique)1 euro(s)')
            or ($_POST["detail_livraison"]=='(POSTE-COLIS-BELGIQUE)6.50 euro(s)')
            && $_POST["pays"]<>"Belgique")
            {echo "0-17"; }
            
            //si on choisit mondial relay belgique et que le pays de mondial relay ou le pays postal pas de belgique
            else if ($_POST["detail_livraison"]=='(MONDIAL-RELAY-BELGIQUE)3 euro(s)'
            && $_POST["pays"]!=="Belgique" 
            or $_POST["cb_PAYS"]<>"BE")
            {echo "0-17"; }
            
            //message alertes si on choisit livraison poste luxembourg et que le pays n'est pas luxembourg 
            else if ($_POST["detail_livraison"]=='(POSTE-ENVELLOPPE-LUXEMBOURG)1.50 euro(s)'
            && $_POST["pays"]<>"Luxembourg")  
            {echo "0-17"; }
            
            //si on choisit mondial relay luxembourg et que le pays de mondial relay ou le pays postal pas de luxembourg
            else if ($_POST["detail_livraison"]=='(mondial relay-LUXEMBOURG)3 euro(s)' 
            && $_POST["pays"]<>"Luxembourg" 
            or $_POST["cb_PAYS"]<>"LU")
            {echo "0-17"; }
            
            //message alertes si on choisit livraison poste france et que le pays n'est pas france 
            else if ($_POST["detail_livraison"] =='(POSTE-ENVELLOPPE-FRANCE)2 euro(s)'
            &&$_POST["pays"]<>"France")  
            {echo "0-17"; }
            
            //si on choisit mondial relay france et que le pays de mondial relay ou le pays postal pas de france
            else if ($_POST["detail_livraison"] =='(mondial relay-FRANCE)4 euro(s)' 
            && $_POST["pays"]<>"France" 
            or $_POST["cb_PAYS"]<>"FR" )
            {echo "0-17"; }
            
            //message alertes si on choisit livraison poste pays-bas et que le pays n'est pas pays-bas 
            else if ($_POST["detail_livraison"]=='(POSTE-ENVELLOPPE-PAYS-BAS)2 euro(s)'
            && $_POST["pays"]<>"Pays-bas")
            {echo "0-17"; }
            
            //si on choisit mondial relay pays-bas et que le pays de mondial relay ou le pays postal pas de pays-bas
            else if ($_POST["detail_livraison"]=='(MONDIAL-RELAY-PAYS-BAS)5 euro(s)'
            && $_POST["pays"]<>"Pays-bas"
            or $_POST["cb_PAYS"]<>"NL" )
            {echo "0-17"; }
            
            
            //message alertes si autre probleme
            else if (!isset($_POST["commande"]) || ($_POST["commande"]=="")) 
               {echo "0-21"; }  // code d'erreur si c'est pas bon pour la commande
            
            else { // tout est bon en ce qui concerne le formulaire, on s'oriente vers un succès}
            1. Modérateur

              J'avais marqué VAR_DUMP($_POST);  ..pas var_dump($_POST["detail_livraison"]); !!

          3. oui jordane j'avais essaye aussi 

            Mais mon code  ne semble plus fonctionner 

            Car sans mettre ce code lorsque je clique sur mon bouton "passer la commande "

            j'ai les différents modals pour m'indiquer les erreurs et les oublis de l'utilisateurs

            Alors que quand je mets ce code plus rien ne se passe lorsque je clique sur passer la commande 

            1. Merci pour l'aide jordane 

              oui c'est vrai que je contrôle tout 

              car ce sont des personnes âgées qui passent commande et que des fois ils choisissent mondial relay mais ne remplisse pas les champs 

              Merci pour la correction 

              Mais lorsque je clique sur mon bouton valider la commande aucune vérification des erreurs n'est effectuée

              voici mon code corrige qui contrôle les erreurs 

              <?php 
              error_reporting(E_ALL);
              // Passez la valeur ci-dessous de 0 à 1 pour afficher les erreurs
              ini_set("display_errors", 1);
              
              // Saisissez ici l'adresse mail du destinataire
              $destinataire = "sanphil2202@gmail.com";
              var_dump($detail_livraison);
              
              //on récupère PROPREMENT les variables AVANT de les utiliser
              $nom = !empty($_POST["nom"]) ? trim($_POST["nom"]) : NULL;
              $prenom = !empty($_POST["prenom"]) ? trim($_POST["prenom"]) : NULL;
              $adresse = !empty($_POST["adresse"]) ? trim($_POST["adresse"]) : NULL;
              $cp = !empty($_POST["cp"]) ? trim($_POST["cp"]) : NULL;
              $ville = !empty($_POST["ville"]) ? trim($_POST["ville"]) : NULL;
              $pays = !empty($_POST["pays"]) ? trim($_POST["pays"]) : NULL;
              $email = !empty($_POST["email"]) ? trim($_POST["email"]) : NULL;
              $adressepoint = !empty($_POST["adressepoint"]) ? trim($_POST["adressepoint"]) : NULL;
              $cppoint = !empty($_POST["cppoint"]) ? trim($_POST["cppoint"]) : NULL;
              $villepoint = !empty($_POST["villepoint"]) ? trim($_POST["villepoint"]) : NULL;
              $cb_ID = !empty($_POST["cb_ID"]) ? trim($_POST["cb_ID"]) : NULL;
              $cb_Nom  = !empty($_POST["cb_Nom "]) ? trim($_POST["cb_Nom "]) : NULL;
              $cb_Adresse  = !empty($_POST["cb_Adresse"]) ? trim($_POST["cb_Adresse"]) : NULL;
              $cb_VILLE = !empty($_POST["cb_VILLE"]) ? trim($_POST["cb_VILLE"]) : NULL;
              $cb_CP = !empty($_POST["cb_CP"]) ? trim($_POST["cb_CP"]) : NULL;
              $cb_PAYS = !empty($_POST["cb_PAYS"]) ? trim($_POST["cb_PAYS"]) : NULL;
              $message = !empty($_POST["message"]) ? trim($_POST["message"]) : NULL;
              $commande = isset($_POST["commande"]) ? trim($_POST["commande"]) : NULL;
              $prix_total = isset($_POST["prix_total"]) ? trim($_POST["prix_total"]) : NULL;
              $frais_fixe = isset($_POST["frais_fixe"]) ? trim($_POST["frais_fixe"]) : NULL;
              $remise = isset($_POST["remise"]) ? trim($_POST["remise"]) : NULL;
              $nouveau_prix = isset($_POST["nouveau_prix"]) ? trim($_POST["nouveau_prix"]) : NULL;
              $prix_depart = isset($_POST["prix_depart"]) ? trim($_POST["prix_depart"]) : NULL;
              $detail_livraison = !empty($_POST["detail_livraison"]) ? trim($_POST["detail_livraison"]) : NULL;
              $total_qte_bas = isset($_POST["total_qte_bas"]) ? trim($_POST["total_qte_bas"]) : 0;
              
              //on initialise quelques variables 
              $date=date('Y/m/d'); 
              $b = ($_POST["cp"]);
              $c = ($_POST["cb_CP"]);
              $country=($_POST["pays"]);
              
              //debut des messages d'alertes
              //si quanditee est egal a 0
              if ($total_qte_bas == '0') {
                echo "0-18";
              }
              
              //si le choix du mode de livraison est le champ cache on affiche une alerte
              else if ($detail_livraison == '() euro(s)') {
                echo "0-15";
              }
              
              //on teste les donnees postale
              else if (empty($nom)) {
                echo "0-1";
              } else if (empty($prenom)) {
                echo "0-2";
              } else if (empty($adresse)) {
                echo "0-3";
              } else if (empty($cp)) {
                echo "0-4";
              } else if (empty($ville)) {
                echo "0-5";
              } else if (empty($pays)) {
                echo "0-6";
              } else if (empty($email)) {
                echo "0-7";
              } else if (!filter_var(($email), FILTER_VALIDATE_EMAIL)) {
                echo "0-10";
              }
              
              //on teste afin de savoir si c'est bien un code postal dans le champs adresse de chaque pays
              else if ($b <> filter_var($b, FILTER_VALIDATE_INT)) {
                echo "0-11";
              }
              
              //test de l'adresse il doit y avoir un numero pour tout les pays chaque pays
              elseif (!preg_match('#[\d ]#', ($adresse))) {
                echo "0-13";
              }
              
              //message erreur du choix du pays on doit absolument entrer un des pays autorises
              else if (($country <> "Belgique") && ($country <> "Luxembourg") && ($country <> "France") && ($country <> "Pays-bas")) {
                echo "0-16";
              }
              
              /**
               * GESTION DE LA LIVRAISON
               */
              echo "<pre>";
              var_dump($_POST);
              echo "</pre>";
              
              //on a pas d'autres choix pour vérifier la valeur du champ que de se servir du code postal puisque les champs sont deja preremplis avec les donnees de mondial relay
              //message alertes si on choisit mondial relay france on afficche une erreur si code postal pas correct
              if ($detail_livraison == '(MONDIAL-RELAY-BELGIQUE)3 euro(s)' && $c <> filter_var($c, FILTER_VALIDATE_INT)) {
                echo "0-8";
              }
              
              //message alertes si on choisit mondial relay france on affiche une erreur si code postal pas correct
              else if ($detail_livraison == '(mondial relay-FRANCE)4 euro(s)' && $c <> filter_var($c, FILTER_VALIDATE_INT)) {
                echo "0-8";
              }
              
              //message alertes si on choisit mondial relay luxembourg on affiche une erreur si code postal pas correct
              else if (($detail_livraison == '(mondial relay-LUXEMBOURG)3 euro(s)') && ($c <> filter_var($c, FILTER_VALIDATE_INT))) {
                echo "0-8";
              }
              
              //message alertes si on choisit mondial relay PAYS-BAS on affiche une erreur si code postal pas correct
              else if (($detail_livraison == '(MONDIAL-RELAY-PAYS-BAS)5 euro(s)') && ($c <> filter_var($c, FILTER_VALIDATE_INT))) {
                echo "0-8";
              }
              
              //message alertes si on choisit poste colis belgique on affiche une erreur si il manque un champs
              else if ($detail_livraison == '(POSTE-COLIS-BELGIQUE_point)5.50 euro(s)' && ( empty($_POST["adressepoint"]) || empty($_POST["cppoint"]) || empty($_POST["villepoint"]) )) {
                echo "0-9";
              }
              
              //message alertes si on choisit livraison poste belgique et que le pays n'est pas belgique
              else if ($detail_livraison == '(POSTE-COLIS-BELGIQUE_point)5.50 euro(s)' || ($detail_livraison == '(POSTE-ENVELLOPPE-belgique)1 euro(s)') || ($detail_livraison == '(POSTE-COLIS-BELGIQUE)6.50 euro(s)') && $pays <> "Belgique") {
                echo "0-17";
              }
              
              //si on choisit mondial relay belgique et que le pays de mondial relay ou le pays postal pas de belgique
              else if ($detail_livraison == '(MONDIAL-RELAY-BELGIQUE)3 euro(s)' && $pays !== "Belgique" || $cb_PAYS <> "BE") {
                echo "0-17";
              }
              
              //message alertes si on choisit livraison poste luxembourg et que le pays n'est pas luxembourg
              else if ($detail_livraison == '(POSTE-ENVELLOPPE-LUXEMBOURG)1.50 euro(s)' && $pays <> "Luxembourg") {
                echo "0-17";
              }
              
              //si on choisit mondial relay luxembourg et que le pays de mondial relay ou le pays postal pas de luxembourg
              else if ($detail_livraison == '(mondial relay-LUXEMBOURG)3 euro(s)' && $pays <> "Luxembourg"
                      or $cb_PAYS <> "LU") {
                echo "0-17";
              }
              
              //message alertes si on choisit livraison poste france et que le pays n'est pas france
              else if ($detail_livraison == '(POSTE-ENVELLOPPE-FRANCE)2 euro(s)' && $pays <> "France") {
                echo "0-17";
              }
              
              //si on choisit mondial relay france et que le pays de mondial relay ou le pays postal pas de france
              else if ($detail_livraison == '(mondial relay-FRANCE)4 euro(s)' && $pays <> "France"
                      or $cb_PAYS <> "FR") {
                echo "0-17";
              }
              
              //message alertes si on choisit livraison poste pays-bas et que le pays n'est pas pays-bas
              else if ($detail_livraison == '(POSTE-ENVELLOPPE-PAYS-BAS)2 euro(s)' && $pays <> "Pays-bas") {
                echo "0-17";
              }
              
              //si on choisit mondial relay pays-bas et que le pays de mondial relay ou le pays postal pas de pays-bas
              else if ($detail_livraison == '(MONDIAL-RELAY-PAYS-BAS)5 euro(s)' && $pays <> "Pays-bas"
                      or $cb_PAYS <> "NL") {
                echo "0-17";
              }
              
              //message alertes si on choisit poste colis belgique on affiche une erreur si il manque un champs
              else if ($detail_livraison=='(POSTE-COLIS-BELGIQUE_point)5.50 euro(s)'
              && $adressepoint==""
              or $cppoint ==""
              or $villepoint =="")
              {echo "0-9"; } 
                
              //message alertes si autre probleme
              if (!$commande) {
                echo "0-21";
              }  // code d'erreur si c'est pas bon pour la commande
              1. j'ai trouve ce qui ne fonctionnait pas 

                si je laisse ce morceau de code avec le if la bouton valider la commande refuse de faire son boulot

                /**
                 * GESTION DE LA LIVRAISON
                 */
                echo "<pre>";
                var_dump($_POST);
                echo "</pre>";
                
                //on a pas d'autres choix pour vérifier la valeur du champ que de se servir du code postal puisque les champs sont deja preremplis avec les donnees de mondial relay
                //message alertes si on choisit mondial relay france on afficche une erreur si code postal pas correct
                if ($detail_livraison == '(MONDIAL-RELAY-BELGIQUE)3 euro(s)' && $c <> filter_var($c, FILTER_VALIDATE_INT)) {
                  echo "0-8";
                }
                1. Modérateur

                  Déjà, à la ligne 8 du code précédent .. tu fais un var_dump sur une variable qui n'existe pas...

                  Ensuite, je ne vois pas en quoi le var dump que moi je t'ai écrit bloquerait quoi que ce soit ..

                  Ta page est en ligne ? Tu peux me donner le lien ?

              2. oui oui le var dump de la variable je l'avais remarqué et donc je l 'avais déplacée en dessous des récupérations des variables 

                lorsque je remets les else if le code passe bien 

                voici le lien , mais depuis la modification la page prends beaucoup de temps a se charger

                https://phil.pecheperle.be/panier/index270422.php

                1. Modérateur

                  Je ne constate aucune erreur..

                  Mais dis moi.. tu appelle ce script en AJAX ?

                  Dans ce cas.. il faut regarder dans la CONSOLE ce qui s'affiche... car en effet, ça ne mettra rien directement sur ta page !

                2. Modérateur
                  @jordane45

                  au passage, voici encore une petite amélioration de ton code

                  <?php
                  
                  error_reporting(E_ALL);
                  // Passez la valeur ci-dessous de 0 à 1 pour afficher les erreurs
                  ini_set("display_errors", 1);
                  
                  // Saisissez ici l'adresse mail du destinataire
                  $destinataire = "***@***";
                  
                  //on récupère PROPREMENT les variables AVANT de les utiliser
                  $nom = !empty($_POST["nom"]) ? trim($_POST["nom"]) : NULL;
                  $prenom = !empty($_POST["prenom"]) ? trim($_POST["prenom"]) : NULL;
                  $adresse = !empty($_POST["adresse"]) ? trim($_POST["adresse"]) : NULL;
                  $cp = !empty($_POST["cp"]) ? trim($_POST["cp"]) : NULL;
                  $ville = !empty($_POST["ville"]) ? trim($_POST["ville"]) : NULL;
                  $pays = !empty($_POST["pays"]) ? trim($_POST["pays"]) : NULL;
                  $email = !empty($_POST["email"]) ? trim($_POST["email"]) : NULL;
                  $cb_CP = !empty($_POST["cb_CP"]) ? trim($_POST["cb_CP"]) : NULL;
                  $cb_PAYS = !empty($_POST["cb_PAYS"]) ? trim($_POST["cb_PAYS"]) : NULL;
                  $adressepoint = !empty($_POST["adressepoint"]) ? trim($_POST["adressepoint"]) : NULL;
                  $cppoint = !empty($_POST["cppoint"]) ? trim($_POST["cppoint"]) : NULL;
                  $villepoint = !empty($_POST["villepoint"]) ? trim($_POST["villepoint"]) : NULL;
                  
                  $detail_livraison = !empty($_POST["detail_livraison"]) ? trim($_POST["detail_livraison"]) : NULL;
                  $total_qte_bas = isset($_POST["total_qte_bas"]) ? trim($_POST["total_qte_bas"]) : 0;
                  $commande = isset($_POST["commande"]) ? trim($_POST["commande"]) : NULL;
                  
                  //on initialise quelques variables pour tester
                  $date = date('Y/m/d');
                  $b = $cp;
                  $c = $cb_CP;
                  $country = $pays;
                  
                  //debut des messages d'alertes
                  //si quanditee est egal a 0
                  if ($total_qte_bas == '0') {
                    echo "0-18";
                  } else if ($detail_livraison == '() euro(s)') {
                    //si le choix du mode de livraison est le champ cache on affiche une alerte
                    echo "0-15";
                  }else if (empty($nom)) {
                    echo "0-1";
                  } else if (empty($prenom)) {
                    echo "0-2";
                  } else if (empty($adresse)) {
                    echo "0-3";
                  } else if (empty($cp)) {
                    echo "0-4";
                  } else if (empty($ville)) {
                    echo "0-5";
                  } else if (empty($pays)) {
                    echo "0-6";
                  } else if (empty($email)) {
                    echo "0-7";
                  } else if (!filter_var(($email), FILTER_VALIDATE_EMAIL)) {
                    echo "0-10";
                  }else if ($b <> filter_var($b, FILTER_VALIDATE_INT)) {
                    //on teste afin de savoir si c'est bien un code postal dans le champs adresse de chaque pays
                    echo "0-11";
                  }elseif (!preg_match('#[\d ]#', ($adresse))) {
                    //test de l'adresse il doit y avoir un numero pour tout les pays chaque pays
                    echo "0-13";
                  }else if ( $country <> "Belgique"  && $country <> "Luxembourg"  &&  $country <> "France"  &&  $country <> "Pays-bas" ) {
                    //message erreur du choix du pays on doit absolument entrer un des pays autorises
                    echo "0-16";
                  }
                  
                  
                  /**
                   * GESTION DE LA LIVRAISON
                   */
                  echo "<pre>";
                  var_dump($_POST);
                  echo "</pre>";
                  
                  switch($detail_livraison ){
                    case '(MONDIAL-RELAY-BELGIQUE)3 euro(s)':
                      if(!filter_var($c, FILTER_VALIDATE_INT)){
                        echo "0-8";
                      }
                      if($pays !== "Belgique" || $cb_PAYS <> "BE"){
                          echo "0-17";
                      }
                      break;
                    case '(mondial relay-FRANCE)4 euro(s)':
                      if(!filter_var($c, FILTER_VALIDATE_INT)){
                        echo "0-8";
                      }
                      break;
                    case '(mondial relay-LUXEMBOURG)3 euro(s)':
                      if(!filter_var($c, FILTER_VALIDATE_INT)){
                        echo "0-8";
                      }
                      break;
                    case '(MONDIAL-RELAY-PAYS-BAS)5 euro(s)':
                      if(!filter_var($c, FILTER_VALIDATE_INT)){
                        echo "0-8";
                      }
                      if($pays <> "Pays-bas" || $cb_PAYS <> "NL") {
                        echo "0-17";
                      }
                      break;
                    case '(POSTE-ENVELLOPPE-PAYS-BAS)2 euro(s)':
                      if( $pays <> "Pays-bas") {
                        echo "0-17";
                      }
                      break;
                  
                    case '(POSTE-COLIS-BELGIQUE_point)5.50 euro(s)':
                      if($pays <> "Belgique") {
                        echo "0-17";
                      }
                      if( !$adressepoint || !$cppoint || !$villepoint) {
                        echo "0-9";
                      }
                      break;
                    case '(POSTE-ENVELLOPPE-belgique)1 euro(s)':  
                    case '(POSTE-COLIS-BELGIQUE)6.50 euro(s)':
                      if($pays <> "Belgique") {
                        echo "0-17";
                      }
                      break;
                    case '(POSTE-ENVELLOPPE-LUXEMBOURG)1.50 euro(s)':
                      if($pays <> "Luxembourg") {
                        echo "0-17";
                      }
                      break;
                    case '(mondial relay-LUXEMBOURG)3 euro(s)':
                      if($pays <> "Luxembourg" || $cb_PAYS <> "LU") {
                        echo "0-17";
                      }
                      break;
                    case '(POSTE-ENVELLOPPE-FRANCE)2 euro(s)':
                      if($pays <> "France") {
                        echo "0-17";
                      }
                      break;
                    case '(POSTE-ENVELLOPPE-FRANCE)4 euro(s)':
                      if($pays <> "France" ||  $cb_PAYS <> "FR") {
                        echo "0-17";
                      }
                      break;
                    default:
                      //aucune erreur detectée
                      echo "Aucune erreur detectée "; //tu pourras retirer ce echo quand tout marchera bien
                  }
                  
                  // AUTRE ERREUR
                  //message alertes si autre probleme
                  if (!$commande) {
                    echo "0-21";
                  }  // code d'erreur si c'est pas bon pour la commande
              3. oui en effet c'est en ajax et je viens bien de voir les var dump dans l'onglet réponse

                Mais comme tu peux le constater si tu oublies un champ quelconque cela n'affiche aucun modal d'erreur

                Je viens de recevoir par mail tes différents essais mais avec des manquements au niveaux des informations qui auraient du être bloquées par les modals d'erreur

                Merci pour le code ,je vais tester cela va peut être afficher les modals en cas d'erreur de champs oublié

                1. je viens de refaire un essai avec ton nouveau code mais le soucis est pareil 

                  aucun message d'erreur de modals ne s'affiche si une erreur est présente 

                  1. Modérateur

                    et donc.. que t'affiche le var_dump ??

                    et quel echo d'erreur s'affiche (si il y en a un ) ?

                2. j'ai donc choisi la livraison par mondial relay 

                  tous les champs ont été remplit avec des erreurs qui auraient du déclenché les modals d'erreur

                  Mais aucun ne s'est affichés 

                  voici ce que donne les var dumps

                  1. Modérateur

                    là.. il n'y a pas le var_dump

                    es-tu sûr que tu as déplié la bonne ligne dans la console ? ( après avoir cliqué sur le bouton pour soumettre la commande) ?

                  2. Modérateur
                    @yg_be

                    en effet, son script mail.php retourne une belle erreur 500 ...

                  3. @jordane45

                    j'ai choisi console 
                    puis j'ai deplie le POST https:....
                    puis j'ai regarde dans l'onglet reponse

                  4. @yg_be

                    yg_be 

                    Avant la modif faite par jaordane les modals s'affichaient bien 

                    Sauf que j'avais des soucis avec la vérification de la livraison 

                3. lorsque je valide la commande je  la reçois bien par mail mais aucun modals d'erreur ne s'affichent pour me signaler les erreurs éventuelles 

                  1. voila il manquait un caractère dans la page

                    voici les var dump mais aucun modals ne s'affichent

                    0-18
                    
                    array(22) {
                      ["nom"]=>
                      string(3) "nom"
                      ["prenom"]=>
                      string(6) "prenom"
                      ["adresse"]=>
                      string(7) "adresse"
                      ["cp"]=>
                      string(4) "code"
                      ["email"]=>
                      string(5) "email"
                      ["adressepoint"]=>
                      string(0) ""
                      ["cppoint"]=>
                      string(0) ""
                      ["villepoint"]=>
                      string(0) ""
                      ["commande"]=>
                      string(2) "[]"
                      ["prix_total"]=>
                      string(4) "3.00"
                      ["prix_depart"]=>
                      string(1) "0"
                      ["total_qte_bas"]=>
                      string(1) "0"
                      ["message"]=>
                      string(0) ""
                      ["ville"]=>
                      string(5) "ville"
                      ["pays"]=>
                      string(4) "pays"
                      ["detail_livraison"]=>
                      string(33) "(MONDIAL-RELAY-BELGIQUE)3 euro(s)"
                      ["cb_ID"]=>
                      string(6) "010261"
                      ["cb_Nom"]=>
                      string(11) "UNIQUE COIN"
                      ["cb_Adresse"]=>
                      string(28) "89 BOULEVARD MONTEBELLO null"
                      ["cb_CP"]=>
                      string(5) "59000"
                      ["cb_VILLE"]=>
                      string(5) "LILLE"
                      ["cb_PAYS"]=>
                      string(2) "FR"
                    }
                    0-17 Erreur ! SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'adressepoint' cannot be null Les datas : Array ( [0] => nom [1] => prenom [2] => adresse [3] => code [4] => ville [5] => pays [6] => email [7] => [8] => [9] => [10] => (MONDIAL-RELAY-BELGIQUE)3 euro(s) [11] => [12] => [] [13] => 3.00 [14] => [15] => [16] => [17] => 0 [18] => 0 [19] => 010261 [20] => [21] => 89 BOULEVARD MONTEBELLO null [22] => 59000 [23] => LILLE [24] => FR [25] => 2022/08/04 ) 1 
                    1. Modérateur

                      Donc :

                      On a bien le var_dump

                      On a bien une erreur 0-17

                      et en complément... tu as une jolie erreur sur ta requête SQL..

                      il serait sûrement utile/interessant .. de ne pas poursuivre le script lorsque tu rencontres une erreur...  non ?

                    2. Contributeur

                      Il est inutile de nous montrer ce qu'affichent les var_dump sans nous montrer le code php correspondant à cet essai.
                      N'hésite pas à nous dire quel modal tu pensais obtenir...

                  2. Merci pour le code jordane 

                    Mais malheureusement si je ne rentre aucune info et que je clique sur valider la commande 

                    De nouveau aucun modal n'apparait 

                    et dans la console au niveau des erreurs 

                    Aucune erreur détectée

                    1. Modérateur

                      Perso.. aucun souci de mon côté...

                      Tu as quoi dans la console ?

                      Qu'affiche l'onglet "requête" de ton appel ajax ? et l'onglet reponse ?

                  3. merci pour le suivi et l'aide jordane 

                    oui car tu as déjà entrer des données 

                    Mais fais un essais sans rien indiquer comme donnée et clic sur passer la commande 

                    dans ce cas de figure voici ce que j'ai pour les deux onglets

                    1. Modérateur

                      ben oui..

                      As tu lu les commentaires dans le code que je t'ai donné ?

                      As tu essayé de le comprendre ?

                      Si la réponse est OUI au deux interrogations .. et vu ce qui s'affiche dans l'onglet REPONSE de ton appel AJAX .. il aurait alors facile de trouver qu'il fallait simplement retirer le DEFAULT  du switch

                      Autrement dit, supprime ces lignes de code

                      default:
                          //aucune erreur detectée
                          $error = "Aucune erreur detectée "; //tu pourras retirer ce $error = quand tout marchera bien
                    2. @jordane45

                      oui bien sur que j'avais lu mais comme cela ne fonctionnait pas je ne l'avais pas retirer 

                      oui bien sur que j'ai essaye de le comprendre 

                      tu as initialise une variable error pour  les erreurs éventuelles a chaque étape

                      A présent tout semble  fonctionner pour les vérifications

                      Mais le pop up de paypal qui doit s'afficher  une fois que tout est correct pour le paiement ne s'affiche pas ...

                      je suppose que cela est du a ces lignes

                      que je dois enlever le $error=

                      if (!$commande) {
                        $error = "0-21";
                      } 
                    3. Modérateur
                      @flexi2202

                      il n'y a pas de raisons de la retirer, ça c'est une de tes conditions à toi au départ ...

                    4. @jordane45

                      oupps désolé surement la fatigue , je n'ai pas beaucoup dormi avec ce code  

                      voici le code épuré des errors 

                      Mais le pop up de payapal qui doit être afficher pour le paiement une fois que tout est correct ne s'affiche pas 

                      <?php
                      
                      error_reporting(E_ALL);
                      // Passez la valeur ci-dessous de 0 à 1 pour afficher les erreurs
                      ini_set("display_errors", 1);
                      
                      // Saisissez ici l'adresse mail du destinataire
                      $destinataire = "sanphil2202@gmail.com";
                      
                      //on récupère PROPREMENT les variables AVANT de les utiliser
                      $nom = !empty($_POST["nom"]) ? trim($_POST["nom"]) : NULL;
                      $prenom = !empty($_POST["prenom"]) ? trim($_POST["prenom"]) : NULL;
                      $adresse = !empty($_POST["adresse"]) ? trim($_POST["adresse"]) : NULL;
                      $cp = !empty($_POST["cp"]) ? trim($_POST["cp"]) : NULL;
                      $ville = !empty($_POST["ville"]) ? trim($_POST["ville"]) : NULL;
                      $pays = !empty($_POST["pays"]) ? trim($_POST["pays"]) : NULL;
                      $email = !empty($_POST["email"]) ? trim($_POST["email"]) : NULL;
                      $cb_CP = !empty($_POST["cb_CP"]) ? trim($_POST["cb_CP"]) : NULL;
                      $cb_PAYS = !empty($_POST["cb_PAYS"]) ? trim($_POST["cb_PAYS"]) : NULL;
                      $adressepoint = !empty($_POST["adressepoint"]) ? trim($_POST["adressepoint"]) : NULL;
                      $cppoint = !empty($_POST["cppoint"]) ? trim($_POST["cppoint"]) : NULL;
                      $villepoint = !empty($_POST["villepoint"]) ? trim($_POST["villepoint"]) : NULL;
                      
                      $detail_livraison = !empty($_POST["detail_livraison"]) ? trim($_POST["detail_livraison"]) : NULL;
                      $total_qte_bas = isset($_POST["total_qte_bas"]) ? trim($_POST["total_qte_bas"]) : 0;
                      $commande = isset($_POST["commande"]) ? trim($_POST["commande"]) : NULL;
                      
                      $error=null; //on inialise à null la variable error
                      
                      //on initialise quelques variables pour tester
                      $date = date('Y/m/d');
                      $b = $cp;
                      $c = $cb_CP;
                      $country = $pays;
                      
                      
                      //debut des messages d'alertes
                      //si quanditee est egal a 0
                      if ($total_qte_bas == '0') {
                        "0-18";
                      } else if ($detail_livraison == '() euro(s)') {
                        //si le choix du mode de livraison est le champ cache on affiche une alerte
                        "0-15";
                      }else if (empty($nom)) {
                         "0-1";
                      } else if (empty($prenom)) {
                         "0-2";
                      } else if (empty($adresse)) {
                         "0-3";
                      } else if (empty($cp)) {
                        "0-4";
                      } else if (empty($ville)) {
                        "0-5";
                      } else if (empty($pays)) {
                         "0-6";
                      } else if (empty($email)) {
                         "0-7";
                      } else if (!filter_var(($email), FILTER_VALIDATE_EMAIL)) {
                         "0-10";
                      }else if ($b != filter_var($b, FILTER_VALIDATE_INT)) {
                        //on teste afin de savoir si c'est bien un code postal dans le champs adresse de chaque pays
                         "0-11";
                      }elseif (!preg_match('#[\d ]#', ($adresse))) {
                        //test de l'adresse il doit y avoir un numero pour tout les pays chaque pays
                         "0-13";
                      }else if ( $country != "Belgique"  && $country != "Luxembourg"  &&  $country != "France"  &&  $country != "Pays-bas" ) {
                        //message erreur du choix du pays on doit absolument entrer un des pays autorises
                         "0-16";
                      }
                      
                      
                      /**
                       * GESTION DE LA LIVRAISON
                       */
                      
                      
                      switch($detail_livraison ){
                        case '(MONDIAL-RELAY-BELGIQUE)3 euro(s)':
                          if(!filter_var($c, FILTER_VALIDATE_INT)){
                            "0-8";
                          }
                          if($pays !== "Belgique" || $cb_PAYS != "BE"){
                              "0-17";
                          }
                          break;
                        case '(mondial relay-FRANCE)4 euro(s)':
                          if(!filter_var($c, FILTER_VALIDATE_INT)){
                             "0-8";
                          }
                          break;
                        case '(mondial relay-LUXEMBOURG)3 euro(s)':
                          if(!filter_var($c, FILTER_VALIDATE_INT)){
                            "0-8";
                          }
                          break;
                        case '(MONDIAL-RELAY-PAYS-BAS)5 euro(s)':
                          if(!filter_var($c, FILTER_VALIDATE_INT)){
                           "0-8";
                          }
                          if($pays != "Pays-bas" || $cb_PAYS != "NL") {
                            "0-17";
                          }
                          break;
                        case '(POSTE-ENVELLOPPE-PAYS-BAS)2 euro(s)':
                          if( $pays != "Pays-bas") {
                             "0-17";
                          }
                          break;
                      
                        case '(POSTE-COLIS-BELGIQUE_point)5.50 euro(s)':
                          if($pays != "Belgique") {
                            "0-17";
                          }
                          if( !$adressepoint || !$cppoint || !$villepoint) {
                             "0-9";
                          }
                          break;
                        case '(POSTE-ENVELLOPPE-belgique)1 euro(s)':  
                        case '(POSTE-COLIS-BELGIQUE)6.50 euro(s)':
                          if($pays != "Belgique") {
                         "0-17";
                          }
                          break;
                        case '(POSTE-ENVELLOPPE-LUXEMBOURG)1.50 euro(s)':
                          if($pays != "Luxembourg") {
                           "0-17";
                          }
                          break;
                        case '(mondial relay-LUXEMBOURG)3 euro(s)':
                          if($pays != "Luxembourg" || $cb_PAYS != "LU") {
                             "0-17";
                          }
                          break;
                        case '(POSTE-ENVELLOPPE-FRANCE)2 euro(s)':
                          if($pays != "France") {
                             "0-17";
                          }
                          break;
                        case '(POSTE-ENVELLOPPE-FRANCE)4 euro(s)':
                          if($pays != "France" ||  $cb_PAYS != "FR") {
                             "0-17";
                          }
                          break;
                       //default:
                          //aucune erreur detectée
                        // $error = "Aucune erreur detectée "; //tu pourras retirer ce $error = quand tout marchera bien
                      }
                      
                      // AUTRE ERREUR
                      //message alertes si autre probleme
                      if (!$commande) {
                        "0-21";
                      }  // code d'erreur si c'est pas bon pour la commande
                      
                      //une fois tous les tests terminés..
                      // tu peux faire le echo de ton erreur si il y en a une... ou faire le reste de ton code
                      
                      //if(!empty($error)){
                        //echo $error;
                      //}
                      else{
                        //ici ton insert en bdd et ton envoi de mail
                    5. Modérateur
                      @flexi2202

                      voici le code épuré des errors 

                      hein ??

                      Mais non !

                      Il faut la variable $error ... sinon ça ne fera strictement rien !

                      Je t'ai donné le code corrigé .. pourquoi l'as tu changé ??

                  4. alors que normalement 

                    il devrait déjà afficher une erreur

                    if ($total_qte_bas == '0') {
                      $error = "0-18";
                    1. le code du pop up de paypal est contenu dans un modal d'erreur qui est le premier de la liste 

                      Qui est donc censé s'afficher si aucune erreur n'est trouvé 

                      La variable commande  quand a elle regroupe l'ensemble de la commande que l'utilisateur a réalisé

                      1. Bonsoir jordane 

                        Ce jour j'ai encore chercher pourquoi je ne voyais pas venir ce pop pu de paiement paypal lorsque je valide la commande

                        j'avais essayé avec le code que tu m'as offert en supprimant les 3 lignes , mais comme je ne voyais toujours pas apparaitre la pop up mondal avec le module paypal arrivé 

                        j'avais pris l'initiative de supprimer la $error

                        J'ai donc tout remis comme neuf

                        je revois bien les mails , toujours pas la pop up du modal avec le module de paypal

                        <?php
                        
                        error_reporting(E_ALL);
                        // Passez la valeur ci-dessous de 0 à 1 pour afficher les erreurs
                        ini_set("display_errors", 1);
                        
                        // Saisissez ici l'adresse mail du destinataire
                        $destinataire = "sanphil2@g";
                        
                        //on récupère PROPREMENT les variables AVANT de les utiliser
                        $nom = !empty($_POST["nom"]) ? trim($_POST["nom"]) : NULL;
                        $prenom = !empty($_POST["prenom"]) ? trim($_POST["prenom"]) : NULL;
                        $adresse = !empty($_POST["adresse"]) ? trim($_POST["adresse"]) : NULL;
                        $cp = !empty($_POST["cp"]) ? trim($_POST["cp"]) : NULL;
                        $ville = !empty($_POST["ville"]) ? trim($_POST["ville"]) : NULL;
                        $pays = !empty($_POST["pays"]) ? trim($_POST["pays"]) : NULL;
                        $email = !empty($_POST["email"]) ? trim($_POST["email"]) : NULL;
                        $cb_CP = !empty($_POST["cb_CP"]) ? trim($_POST["cb_CP"]) : NULL;
                        $cb_PAYS = !empty($_POST["cb_PAYS"]) ? trim($_POST["cb_PAYS"]) : NULL;
                        $adressepoint = !empty($_POST["adressepoint"]) ? trim($_POST["adressepoint"]) : NULL;
                        $cppoint = !empty($_POST["cppoint"]) ? trim($_POST["cppoint"]) : NULL;
                        $villepoint = !empty($_POST["villepoint"]) ? trim($_POST["villepoint"]) : NULL;
                        
                        $detail_livraison = !empty($_POST["detail_livraison"]) ? trim($_POST["detail_livraison"]) : NULL;
                        $total_qte_bas = isset($_POST["total_qte_bas"]) ? trim($_POST["total_qte_bas"]) : 0;
                        $commande = isset($_POST["commande"]) ? trim($_POST["commande"]) : NULL;
                        
                        $error=null; //on inialise à null la variable error
                        
                        //on initialise quelques variables pour tester
                        $date = date('Y/m/d');
                        $b = $cp;
                        $c = $cb_CP;
                        $country = $pays;
                        
                        
                        //debut des messages d'alertes
                        //si quanditee est egal a 0
                        if ($total_qte_bas == '0') {
                          $error = "0-18";
                        } else if ($detail_livraison == '() euro(s)') {
                          //si le choix du mode de livraison est le champ cache on affiche une alerte
                          $error = "0-15";
                        }else if (empty($nom)) {
                          $error = "0-1";
                        } else if (empty($prenom)) {
                          $error = "0-2";
                        } else if (empty($adresse)) {
                          $error = "0-3";
                        } else if (empty($cp)) {
                          $error = "0-4";
                        } else if (empty($ville)) {
                          $error = "0-5";
                        } else if (empty($pays)) {
                          $error = "0-6";
                        } else if (empty($email)) {
                          $error = "0-7";
                        } else if (!filter_var(($email), FILTER_VALIDATE_EMAIL)) {
                          $error = "0-10";
                        }else if ($b != filter_var($b, FILTER_VALIDATE_INT)) {
                          //on teste afin de savoir si c'est bien un code postal dans le champs adresse de chaque pays
                          $error = "0-11";
                        }elseif (!preg_match('#[\d ]#', ($adresse))) {
                          //test de l'adresse il doit y avoir un numero pour tout les pays chaque pays
                          $error = "0-13";
                        }else if ( $country != "Belgique"  && $country != "Luxembourg"  &&  $country != "France"  &&  $country != "Pays-bas" ) {
                          //message erreur du choix du pays on doit absolument entrer un des pays autorises
                          $error = "0-16";
                        }
                        
                        
                        /**
                         * GESTION DE LA LIVRAISON
                         */
                        
                        
                        switch($detail_livraison ){
                          case '(MONDIAL-RELAY-BELGIQUE)3 euro(s)':
                            if(!filter_var($c, FILTER_VALIDATE_INT)){
                              $error = "0-8";
                            }
                            if($pays !== "Belgique" || $cb_PAYS != "BE"){
                                $error = "0-17";
                            }
                            break;
                          case '(mondial relay-FRANCE)4 euro(s)':
                            if(!filter_var($c, FILTER_VALIDATE_INT)){
                              $error = "0-8";
                            }
                            break;
                          case '(mondial relay-LUXEMBOURG)3 euro(s)':
                            if(!filter_var($c, FILTER_VALIDATE_INT)){
                              $error = "0-8";
                            }
                            break;
                          case '(MONDIAL-RELAY-PAYS-BAS)5 euro(s)':
                            if(!filter_var($c, FILTER_VALIDATE_INT)){
                              $error = "0-8";
                            }
                            if($pays != "Pays-bas" || $cb_PAYS != "NL") {
                              $error = "0-17";
                            }
                            break;
                          case '(POSTE-ENVELLOPPE-PAYS-BAS)2 euro(s)':
                            if( $pays != "Pays-bas") {
                              $error = "0-17";
                            }
                            break;
                        
                          case '(POSTE-COLIS-BELGIQUE_point)5.50 euro(s)':
                            if($pays != "Belgique") {
                              $error = "0-17";
                            }
                            if( !$adressepoint || !$cppoint || !$villepoint) {
                              $error = "0-9";
                            }
                            break;
                          case '(POSTE-ENVELLOPPE-belgique)1 euro(s)':  
                          case '(POSTE-COLIS-BELGIQUE)6.50 euro(s)':
                            if($pays != "Belgique") {
                              $error = "0-17";
                            }
                            break;
                          case '(POSTE-ENVELLOPPE-LUXEMBOURG)1.50 euro(s)':
                            if($pays != "Luxembourg") {
                              $error = "0-17";
                            }
                            break;
                          case '(mondial relay-LUXEMBOURG)3 euro(s)':
                            if($pays != "Luxembourg" || $cb_PAYS != "LU") {
                              $error = "0-17";
                            }
                            break;
                          case '(POSTE-ENVELLOPPE-FRANCE)2 euro(s)':
                            if($pays != "France") {
                              $error = "0-17";
                            }
                            break;
                          case '(POSTE-ENVELLOPPE-FRANCE)4 euro(s)':
                            if($pays != "France" ||  $cb_PAYS != "FR") {
                              $error = "0-17";
                            }
                            break;
                          //default:
                            //aucune erreur detectée
                            //$error = "Aucune erreur detectée "; //tu pourras retirer ce $error = quand tout marchera bien
                        }
                        
                        // AUTRE ERREUR
                        //message alertes si autre probleme
                        if (!$commande) {
                          $error = "0-21";
                        }  // code d'erreur si c'est pas bon pour la commande
                        
                        
                        
                        //une fois tous les tests terminés..
                        // tu peux faire le echo de ton erreur si il y en a une... ou faire le reste de ton code
                        
                        if(!empty($error)){
                          echo $error;
                        }else{
                          //ici ton insert en bdd et ton envoi de mail
                        1. Modérateur

                          Et donc... Que t'affiche la console ? L'onglet réponse de ton ajax ?

                      • 1
                      • 2