Mes conditions ne s'exécute pas dans le bon ordre

Résolu/Fermé
flexi2202 Messages postés 3798 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 3 mai 2024 - Modifié le 23 août 2022 à 14:08
flexi2202 Messages postés 3798 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 3 mai 2024 - 25 août 2022 à 13:44

bonjour a tous

encore un nouveau soucis pour lequel google n' a pas su m'aider

dans mon bon de commande je vérifie un tas de chose 

Notamment en dernier lieu un bouton radio afin d'obliger l'utilisateur a faire un choix

Mais malheureusement cette dernière condition passe la première 

Je souhaiterais qu'elle garde sa place de dernière vérification

Voici le code php

//si quanditee est egal a 0
if ($total_qte_bas == '0') {
  $error = "0-18";
 
//si le choix du mode de livraison est le champ cache on affiche une alerte
} else if ($livraison == '() euro(s)') {
  $error = "0-15";
  
//on verifie le reste des donnees postale
}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";
  
//je teste pour savoir si cela est une vraie adresse email valable pour tous les pays 
} else if (!filter_var(($email), FILTER_VALIDATE_EMAIL)) {
  $error = "0-10";
  
  //on teste afin de savoir si c'est bien un code postal dans le champs adresse valable pour tous les pays 
}else if ($b != filter_var($b, FILTER_VALIDATE_INT)) {
   $error = "0-11";
   
   //test de l'adresse il doit y avoir un numero valable pour tous les pays
}elseif (!preg_match('#[\d ]#', ($adresse))) {
  $error = "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" ) {
  $error = "0-16";
}

/**
 * GESTION DE LA LIVRAISON
 */

switch($livraison ){
    
    //on teste pour savoir si le pays est bien BE pour la belgique
    //on teste pour savoir si nous sommes bien en belgique
  case '(MONDIAL-RELAY-BELGIQUE)3 euro(s)':
    //  if(!filter_var($c, FILTER_VALIDATE_INT)){
   if($cb_PAYS != "BE"){ 
      $error = "0-8";
    }
   // if($cb_PAYS != "BE" || $cb_PAYS != "FR" ){
     // $error = "0-14";
      //}
    if($pays !== "Belgique" and $cb_PAYS == "BE"){
        $error = "0-17";
    }
     if($pays === "Belgique" and $cb_PAYS != "BE"){
        $error = "0-19";
    }
   
    break;
    
    //on teste pour savoir si le pays est bien FR pour la france 
    //on teste pour savoir si nous sommes bien en france
  case '(mondial relay-FRANCE)4 euro(s)':
      if($cb_PAYS != "FR"){ 
      $error = "0-8";
    }
    //if($pays !== "France" || $cb_PAYS != "FR"){
      //  $error = "0-14";
    //}
      if($pays !== "France" and $cb_PAYS == "FR"){
        $error = "0-17";
    }
     if($pays === "France" and $cb_PAYS != "FR"){
        $error = "0-19";
    }
   
    break;
    
    //on teste pour savoir si le pays est bien LU pour le luxembourg
    //on teste pour savoir si nous sommes bien au luxembourg
  case '(mondial relay-LUXEMBOURG)3 euro(s)':
      if($cb_PAYS != "LU"){ 
      $error = "0-8";
    }
    // if($pays !== "Luxembourg" || $cb_PAYS != "LU"){
      //  $error = "0-17";
    //}
       if($pays !== "Luxembourg" and $cb_PAYS == "LU"){
        $error = "0-17";
    }
     if($pays === "Luxembourg" and $cb_PAYS != "LU"){
        $error = "0-19";
    }
    break;
    
    //on teste pour savoir si le pays est bien NL pour les pays-bas
    //on teste pour savoir si nous sommes bien aux pays pas
   case '(MONDIAL-RELAY-PAYS-BAS)5 euro(s)':
      if($cb_PAYS != "NL"){ 
      $error = "0-8";
    }
    // if($pays !== "Pays-bas" || $cb_PAYS != "NL"){
      //  $error = "0-17";
    //}
        if($pays !== "Pays-bas" and $cb_PAYS == "NL"){
        $error = "0-17";
    }
     if($pays === "Pays-bas" and $cb_PAYS != "NL"){
        $error = "0-19";
    }
    break;
    
    //********************************
    //on teste les envois postaux******
    //**********************************
    //si on choisit frais de livraison pays le pays choisi doit etre pays bas 
  case '(POSTE-ENVELLOPPE-PAYS-BAS)2 euro(s)':
    if( $pays != "Pays-bas") {
      $error = "0-17";
    }
    break;

//si on choisit frais de livraison pays le pays choisi doit etre belgique et les 3 point doivent etre remplit
  case '(POSTE-COLIS-BELGIQUE_point)5.50 euro(s)':
    if($pays != "Belgique") {
      $error = "0-17";
    }
    if( !$adressepoint || !$cppoint || !$villepoint) {
      $error = "0-9";
    }
    break;
    
    //si on choisit frais de livraison pays le pays choisi doit etre belgique
  case '(POSTE-ENVELLOPPE-belgique)1 euro(s)':  
  case '(POSTE-COLIS-BELGIQUE)6.50 euro(s)':
    if($pays != "Belgique") {
      $error = "0-17";
    }
    break;
    
    //si on choisit frais de livraison pays le pays choisi doit etre luxembourg
  case '(POSTE-ENVELLOPPE-LUXEMBOURG)1.50 euro(s)':
    if($pays != "Luxembourg") {
      $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
}
    //********************************
    //fin teste les envois postaux******
    //**********************************

// AUTRE ERREUR
//message alertes si autre probleme

//je verifie si le total du bon de promo est pareil au panier 
if ($promotioncases =="20" && ($nouveau_prix_promo_int !=  $prix_total_int )  )
{  $error = "0-12";}  

//je verifie si le bouton radio coche n'est pas 10
 else if ($promotioncases =="10" )  
 { $error = "0-20";}  

// Dernier code d'erreur si c'est pas bon pour la commande
else if (!$commande) {
  $error = "0-21";
}  

//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;
  //sinon on insert en bdd et ton envoi de mail
}else{

et c'est cette condition qui refuse de rester dans les dernières a être testée 

//je verifie si le bouton radio coche n'est pas 10
 else if ($promotioncases =="10" )  
 { $error = "0-20";}  

8 réponses

blackmefias_3350 Messages postés 706 Date d'inscription dimanche 20 septembre 2020 Statut Membre Dernière intervention 8 mars 2024 58
23 août 2022 à 17:36

bonjour,

Ne faudrait-il pas écrire une ou plusieurs  fonction(s) qui se trouverai dans un dossier    et les appeler  dans votre fichier (page.php).       


1
flexi2202 Messages postés 3798 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 3 mai 2024 187
23 août 2022 à 20:04

bonjour 

Merci pour la réponse

mon soucis est le swith dans les conditions 

si je supprime la partie des switchs tout fonctionne correctement 

0
yg_be Messages postés 22764 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 mai 2024 1 480
23 août 2022 à 21:29

bonjour,

Pour moi, ce qui est bizarre, c'est que:

  1. tu n'as ajouté aucun echo() dans le code, qui te permettrait de comprendre ce que fait ton code
  2. tu nous expliques que tu as un résultat inattendu, sans nous donner le contenu des variables concernées.

Au minimum, au lieu d'écrire "c'est bizarre", tu pourrais expliquer pourquoi tu trouves cela bizarre, et quel résultat tu aurais attendu.

1
flexi2202 Messages postés 3798 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 3 mai 2024 187
Modifié le 23 août 2022 à 21:55

bonjour yg_be

j'ouvre mon bon de commande et je clic sur passer la commande 

au niveau des variables repérée je n'ai que  

 
$promotioncases =="10" qui est récupérée puisque c'est un bouton caché 

pour toute les autres elles sont a 0 ou null

voici mon code modifie avec des var_dump

//debut des messages d'alertes
//si quanditee est egal a 0
if ($total_qte_bas == '0') {
  $error = "0-18";
  
 echo "quanditee";
var_dump($error);
echo "quanditee";

//si le choix du mode de livraison est le champ cache on affiche une alerte
} else if ($livraison == '() euro(s)') {
  $error = "0-15";
  
   echo "livraison";
var_dump($error);
echo "livraison";

//on verifie le reste des donnees postale
}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";
  
//je teste pour savoir si cela est une vraie adresse email valable pour tous les pays 
} else if (!filter_var(($email), FILTER_VALIDATE_EMAIL)) {
  $error = "0-10";
  
  //on teste afin de savoir si c'est bien un code postal dans le champs adresse valable pour tous les pays 
}else if ($b != filter_var($b, FILTER_VALIDATE_INT)) {
   $error = "0-11";
   
   //test de l'adresse il doit y avoir un numero valable pour tous les pays
}elseif (!preg_match('#[\d ]#', ($adresse))) {
  $error = "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" ) {
  $error = "0-16";
  
     echo "country";
var_dump($error);
echo "country";

}

/**
 * GESTION DE LA LIVRAISON
 */


switch($livraison ){
    
    //on teste pour savoir si le pays est bien BE pour la belgique
    //on teste pour savoir si nous sommes bien en belgique
  case '(MONDIAL-RELAY-BELGIQUE)3 euro(s)':
    //  if(!filter_var($c, FILTER_VALIDATE_INT)){
   if($cb_PAYS != "BE"){ 
      $error = "0-8";
    }
   // if($cb_PAYS != "BE" || $cb_PAYS != "FR" ){
     // $error = "0-14";
      //}
    if($pays !== "Belgique" and $cb_PAYS == "BE"){
        $error = "0-17";
    }
     if($pays === "Belgique" and $cb_PAYS != "BE"){
        $error = "0-19";
    }
   
    break;
    
    //on teste pour savoir si le pays est bien FR pour la france 
    //on teste pour savoir si nous sommes bien en france
  case '(mondial relay-FRANCE)4 euro(s)':
      if($cb_PAYS != "FR"){ 
      $error = "0-8";
    }
    //if($pays !== "France" || $cb_PAYS != "FR"){
      //  $error = "0-14";
    //}
      if($pays !== "France" and $cb_PAYS == "FR"){
        $error = "0-17";
    }
     if($pays === "France" and $cb_PAYS != "FR"){
        $error = "0-19";
    }
   
    break;
    
    //on teste pour savoir si le pays est bien LU pour le luxembourg
    //on teste pour savoir si nous sommes bien au luxembourg
  case '(mondial relay-LUXEMBOURG)3 euro(s)':
      if($cb_PAYS != "LU"){ 
      $error = "0-8";
    }
    // if($pays !== "Luxembourg" || $cb_PAYS != "LU"){
      //  $error = "0-17";
    //}
       if($pays !== "Luxembourg" and $cb_PAYS == "LU"){
        $error = "0-17";
    }
     if($pays === "Luxembourg" and $cb_PAYS != "LU"){
        $error = "0-19";
    }
    break;
    
    //on teste pour savoir si le pays est bien NL pour les pays-bas
    //on teste pour savoir si nous sommes bien aux pays pas
   case '(MONDIAL-RELAY-PAYS-BAS)5 euro(s)':
      if($cb_PAYS != "NL"){ 
      $error = "0-8";
    }
    // if($pays !== "Pays-bas" || $cb_PAYS != "NL"){
      //  $error = "0-17";
    //}
        if($pays !== "Pays-bas" and $cb_PAYS == "NL"){
        $error = "0-17";
    }
     if($pays === "Pays-bas" and $cb_PAYS != "NL"){
        $error = "0-19";
    }
    break;
    
    //********************************
    //on teste les envois postaux******
    //**********************************
    //si on choisit frais de livraison pays le pays choisi doit etre pays bas 
  case '(POSTE-ENVELLOPPE-PAYS-BAS)2 euro(s)':
    if( $pays != "Pays-bas") {
      $error = "0-17";
    }
    break;

//si on choisit frais de livraison pays le pays choisi doit etre belgique et les 3 point doivent etre remplit
  case '(POSTE-COLIS-BELGIQUE_point)5.50 euro(s)':
    if($pays != "Belgique") {
      $error = "0-17";
    }
    if( !$adressepoint || !$cppoint || !$villepoint) {
      $error = "0-9";
    }
    break;
    
    //si on choisit frais de livraison pays le pays choisi doit etre belgique
  case '(POSTE-ENVELLOPPE-belgique)1 euro(s)':  
  case '(POSTE-COLIS-BELGIQUE)6.50 euro(s)':
    if($pays != "Belgique") {
      $error = "0-17";
    }
    break;
    
    //si on choisit frais de livraison pays le pays choisi doit etre luxembourg
  case '(POSTE-ENVELLOPPE-LUXEMBOURG)1.50 euro(s)':
    if($pays != "Luxembourg") {
      $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
}
    //********************************
    //fin teste les envois postaux******
    //**********************************

// AUTRE ERREUR
//message alertes si autre probleme
echo "erreur";
var_dump($error);
echo "erreur";

//je verifie si le bouton radio coche n'est pas 10
  if ($promotioncases =="10" )  
 { $error = "0-20";}  


else if ($promotioncases =="20" && ($nouveau_prix_promo_int !=  $prix_total_int )  )
{  $error = "0-12";}  



// Dernier code d'erreur si c'est pas bon pour la commande
else if (!$commande) {
  $error = "0-21";
}  

//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;
  //sinon on insert en bdd et ton envoi de mail
}else{

mais ce que cela me retourne n'est pas très clair  dans les 4 var_dump j'ai un complet et un deuxième sans les echos

quand aux 2 autres pas présent 

quanditeestring(4) "0-18" quanditeeerreurstring(4) "0-18" erreur0-20
1
flexi2202 Messages postés 3798 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 3 mai 2024 187
23 août 2022 à 22:05

je pourrais remplacer le switch par des else if , mais j'aimerais comprendre pourquoi ca ne fonctionne pas bien avec ce switch

1
yg_be Messages postés 22764 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 mai 2024 1 480
23 août 2022 à 22:22

Pour moi, ton code se comporte exactement comme il est écrit.

En quoi se comportement est-il bizarre?

Si j'était toi, je prendrais un peu de temps pour faire des echo() qui te donnent un affichage plus clair: j'ai l'impression que tu ne comprends pas ce qui est affiché. tu écris, d'ailleurs "ce que cela me retourne n'est pas très clair"

1
flexi2202 Messages postés 3798 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 3 mai 2024 187
Modifié le 23 août 2022 à 22:30

Merci pour ton aide 

si si je comprends ce qu'il devrait faire 

prenons la toute première condition 

//si quanditee est egal a 0
if ($total_qte_bas == '0') {
  $error = "0-18";

lorsque je clic sur valider la commande 

c'est bien par cette condition qu'il doit commencer ???

pourquoi alors il commence par celle ci

//je verifie si le bouton radio coche n'est pas 10
 else if ($promotioncases =="10" )  
 { $error = "0-20";} 

et pour cause de me répéter si j'enlève la partie du switch cela fonctionne correctement 

c 'est bien la condition suivante qui est la première a fonctionner 

//si quanditee est egal a 0
if ($total_qte_bas == '0') {
  $error = "0-18";
0
jordane45 Messages postés 38162 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 mai 2024 4 658 > flexi2202 Messages postés 3798 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 3 mai 2024
23 août 2022 à 22:45

Au risque de me répéter moi aussi ... il ne COMMENCE pas par cette condition ... il FINI par cette condition...   et ECRASE la valeur précédemment renseignée dans la variable $error ...

Tu as beaucoup de mal à comprendre visiblement ...  et c'est pourtant le B.A.BA de la programmation ( quelque soit le langage (procédural )

Faudrait vraiment que tu suive des formations avant de continuer tes dev ( tes bidouilles devrais-je dire.. )

Il te manque les bases du langages  et ça ne peut que te ralentir fortement dans l'écriture de tes code.

Quoi qu'il en soit, regarde ma réponse précédente. Cela devrait "patcher" ton "bug"

1
flexi2202 Messages postés 3798 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 3 mai 2024 187 > jordane45 Messages postés 38162 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 mai 2024
Modifié le 23 août 2022 à 23:02

en supposant qu'il finisse par cette condition 

J'ai parfaitement compris qu' a chaque nouvelle condition la précédente est encrassée et remplacée par la suivante 

Pourquoi lorsque je remplace le morceau de switch par des else if 

Tout fonctionne correctement ?

Avec ce code aucun soucis 

//debut des messages d'alertes
//si quanditee est egal a 0
if ($total_qte_bas == '0') {
  $error = "0-18";
  
 //echo "quanditee";
//var_dump($error);
//echo "quanditee";

//si le choix du mode de livraison est le champ cache on affiche une alerte
} else if ($livraison == '() euro(s)') {
  $error = "0-15";
  
  // echo "livraison";
//var_dump($error);
//echo "livraison";

//on verifie le reste des donnees postale
}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";
  
//je teste pour savoir si cela est une vraie adresse email valable pour tous les pays 
} else if (!filter_var(($email), FILTER_VALIDATE_EMAIL)) {
  $error = "0-10";
  
  //on teste afin de savoir si c'est bien un code postal dans le champs adresse valable pour tous les pays 
}else if ($b != filter_var($b, FILTER_VALIDATE_INT)) {
   $error = "0-11";
   
   //test de l'adresse il doit y avoir un numero valable pour tous les pays
}elseif (!preg_match('#[\d ]#', ($adresse))) {
  $error = "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" ) {
  $error = "0-16";
  
  //   echo "country";
//var_dump($error);
//echo "country";

}







/**
 * GESTION DE LA LIVRAISON
 */


else if ($livraison  == '(MONDIAL-RELAY-BELGIQUE)3 euro(s)') {
     //  if(!filter_var($c, FILTER_VALIDATE_INT)){
      if($cb_PAYS != "BE"){ 
        $error = "0-8";
    }
     if($pays !== "Belgique" and $cb_PAYS == "BE"){
        $error = "0-17";
    }
     if($pays === "Belgique" and $cb_PAYS != "BE"){
        $error = "0-19";
    }
} elseif ($livraison== '(mondial relay-FRANCE)4 euro(s)') {
        if($cb_PAYS != "FR"){ 
      $error = "0-8";
    }
       if($pays !== "France" and $cb_PAYS == "FR"){
        $error = "0-17";
    }
     if($pays === "France" and $cb_PAYS != "FR"){
        $error = "0-19";
    }
   
} elseif ($livraison == '(mondial relay-LUXEMBOURG)3 euro(s)') {
       if($cb_PAYS != "LU"){ 
      $error = "0-8";
    }
       if($pays !== "Luxembourg" and $cb_PAYS == "LU"){
        $error = "0-17";
    }
     if($pays === "Luxembourg" and $cb_PAYS != "LU"){
        $error = "0-19";
    }


} elseif ($livraison == '(MONDIAL-RELAY-PAYS-BAS)5 euro(s)') {
       if($cb_PAYS != "NL"){ 
      $error = "0-8";
    }
      if($pays !== "Pays-bas" and $cb_PAYS == "NL"){
        $error = "0-17";
    }
     if($pays === "Pays-bas" and $cb_PAYS != "NL"){
        $error = "0-19";
    }
}
elseif ($livraison == '(POSTE-ENVELLOPPE-PAYS-BAS)2 euro(s)') {
      if( $pays != "Pays-bas") {
      $error = "0-17";
    }
}
elseif ($livraison == '(POSTE-COLIS-BELGIQUE_point)5.50 euro(s)') {
      if($pays != "Belgique") {
      $error = "0-17";
    }
    if( !$adressepoint || !$cppoint || !$villepoint) {
      $error = "0-9";
    }
}
elseif ($livraison == '(POSTE-ENVELLOPPE-belgique)1 euro(s)') {
     if($pays != "Belgique") {
      $error = "0-17";
    }
}
elseif ($livraison =='(POSTE-ENVELLOPPE-LUXEMBOURG)1.50 euro(s)') {
      if($pays != "Luxembourg") {
      $error = "0-17";
    }
}
elseif ($livraison == '(POSTE-ENVELLOPPE-FRANCE)2 euro(s)') {
       if($pays != "France" ||  $cb_PAYS != "FR") {
      $error = "0-17";
    }
}

elseif ($livraison == "(POSTE-COLIS-BELGIQUE)6.50 euro(s)") {
       if($pays != "Belgique" ||  $cb_PAYS != "FR") {
      $error = "0-17";
    }
}

//je verifie si le bouton radio coche n'est pas 10 et qu'il n'y a pas déjà une autre erreur
// provenant des tests qui se trouvent au dessus dans le code...
elseif ($promotioncases =="10" ) ) { 
    $error = "0-20";
}   


else if ($promotioncases =="20" && ($nouveau_prix_promo_int !=  $prix_total_int )  ){  
    $error = "0-12";
}  



// Dernier code d'erreur si c'est pas bon pour la commande
else if (!$commande) {
  $error = "0-21";
}  

//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;
  //sinon on insert en bdd et ton envoi de mail
}else{
0
jordane45 Messages postés 38162 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 mai 2024 4 658 > flexi2202 Messages postés 3798 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 3 mai 2024
Modifié le 23 août 2022 à 23:09

Par ce que dans un IF .. ELSEIF .. ELSE ...   tu n'entres que dans UN seul cas ...

Exemple :

$var = 10;

if($var == 0 ){
  echo "var:" . $var;
} elseif ($var==5){
    echo "var:" . $var;
}elseif($var==10){
  //Il va entrer ici
  echo "var:" . $var;

}elseif($var < 20 ){
  //C'est aussi vrai.. mais il se sera arrété à la condition d'avant
   echo "var:" . $var;
}

Alors que là .. toi tu as plusieurs blocks (comme je te l'ai déjà expliqué) Et donc.. tu es dans ce cas de figure

$var = 10;

if($var == 0 ){
  echo "var:" . $var;
} elseif ($var==5){
    echo "var:" . $var;
}elseif($var==10){
  //Il va entrer ici
  echo "var:" . $var;
}


// AUTRE IF/ESLE..
if($var == 50 ){
   echo "var:" . $var;
}elseif($var < 20 ){
  //C'est aussi vrai.. et comme c'est dans autre IF . cette condition sera également traitée
   echo "var:" . $var;
}

J'espère que cette fois tu as compris....

0
yg_be Messages postés 22764 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 mai 2024 1 480 > flexi2202 Messages postés 3798 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 3 mai 2024
24 août 2022 à 09:29

Il suffisait d'ajouter un else avant le switch.

1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jordane45 Messages postés 38162 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 mai 2024 4 658
Modifié le 23 août 2022 à 22:42

Ce n'est pourtant pas bien compliqué

Au lieu de

// AUTRE ERREUR
//message alertes si autre probleme
echo "code";
var_dump($error);
echo "code";

//je verifie si le bouton radio coche n'est pas 10
  if ($promotioncases =="10" )  
 { $error = "0-20";}  

Tu fais

// AUTRE ERREUR
//message alertes si autre probleme
echo "code";
var_dump($error);
echo "code";

//je verifie si le bouton radio coche n'est pas 10 et qu'il n'y a pas déjà une autre erreur
// provenant des tests qui se trouvent au dessus dans le code...
if ($promotioncases =="10" && empty($error) ) { 
    $error = "0-20";
}  

PS: tu noteras que mes IF .. je les écris en plaçant les accolades d'une certaines façons ..  ( c'est ce que préconise la norme.. et ça rend le code plus lisible ( surtout pour des vrais développeurs). )

Merci donc de bien vouloir respecter cette "norme" lorsque tu nous présentes ton code


1
flexi2202 Messages postés 3798 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 3 mai 2024 187
23 août 2022 à 22:50

Merci jordane pour le code 

Je vais respecter cette norme ...

je viens mettre en place ton code 

voici ce q'il me retourne 

codestring(4) "0-18" code0-18

donc que que $error n'est pas vide ...

0
jordane45 Messages postés 38162 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 mai 2024 4 658 > flexi2202 Messages postés 3798 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 3 mai 2024
23 août 2022 à 23:11

C'est bien ce que tu voulais ?

Tu peux donc mettre la discussion en résolue. Merci

1
flexi2202 Messages postés 3798 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 3 mai 2024 187 > jordane45 Messages postés 38162 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 mai 2024
23 août 2022 à 23:20

oui et non 

j'aurais souhaiter savoir pourquoi le code avec le switch ne fonctionne pas correctement 

alors que si je remplace le morceau de code switch par des else if cela fonctionne correctement 

Mais bon le principal c'est que cela fonctionne 

0
jordane45 Messages postés 38162 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 mai 2024 4 658 > flexi2202 Messages postés 3798 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 3 mai 2024
23 août 2022 à 23:28

Mais... mais... c'est ce que je n'arrête pas de t'expliquer !

Ton code est découpé en TROIS blocs conditionnels .

- Un premier ensemble de IF / ELSEIF ..

- Puis un SWITCH ( c'est un peu comme un if/elseif )

- Puis un autre bloc IF / ELSEIF 

Donc .. CHAQUE BLOC est susceptible d'écraser ta variable $error ..  

Bon... là je ne sais plus quoi te dire ni comment te l'expliquer !  Relis mes explications

Essais de comprendre les exemples que je t'ai donné. ... par ce que .. franchement.. là je ne peux rien de plus pour t'aider à comprendre le fonctionnement "basique" de la programmation.

0
diablo13800 Messages postés 2890 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 1 845
23 août 2022 à 14:16

Bonjour,

Qu'est-ce qui vous fait dire qu'elle est tester avant les autres ? 

Qu'est-ce qui vous est remonté? 


0
flexi2202 Messages postés 3798 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 3 mai 2024 187
23 août 2022 à 15:53

bonjour

Merci pour la reponse

Car lorsque je valide ma commande sans entrer aucune information 

la première condition est de me signaler qu il faut ajouter des articles 

0
diablo13800 Messages postés 2890 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 1 845 > flexi2202 Messages postés 3798 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 3 mai 2024
23 août 2022 à 15:57

Vous voyez ca dans le mauvais sens. En réalité, c'est bien la dernière valeur testé. Mais vu que $error est constamment modifié, vous n'avez que le dernier résultat de $error.

Pour le tester, essayer de voir la variation de $error au fil du temps en rajoutant des var_dump($error). 

0
flexi2202 Messages postés 3798 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 3 mai 2024 187 > diablo13800 Messages postés 2890 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024
23 août 2022 à 16:05

lorsque je parle d'erreur ce sont des messages d'erreur que l'utilisateur voit par l'intermédiaire des modals 

0
jordane45 Messages postés 38162 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 mai 2024 4 658
23 août 2022 à 15:01

Bonjour,

Comme pour chacune de tes questions ....  pourrais tu nous faire un var_dump de tes variable afin de nous indiquer ce qu'elles valent et donc, par conséquent..  si c'est normal que ça entre dans ton elseif ...


0
flexi2202 Messages postés 3798 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 3 mai 2024 187
23 août 2022 à 16:01

Bonjour jordane 

je viens de faire des var_dump mais tout est vide sauf le bouton radio cache qui est bien a 10 

ce qui est logique puisque je valide ma commande sans entrer aucune information 

Et normalement dans ce cas de figure ca serait la condition et l'erreur qu'il faut entrer des articles qui devrait fonctionner  et non pas celle que je dois cocher un bouton radio autre que le 10

0
flexi2202 Messages postés 3798 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 3 mai 2024 187
Modifié le 23 août 2022 à 16:32

 je viens de remarquer que si je déplace cette condition et modifie le code de cette façon

la première condition est bien accomplie la première 

/debut des messages d'alertes
//si quanditee est egal a 0
if ($total_qte_bas == '0') {
  $error = "0-18";
 
//si le choix du mode de livraison est le champ cache on affiche une alerte
} else if ($livraison == '() euro(s)') {
  $error = "0-15";
  
//on verifie le reste des donnees postale
}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";
  
//je teste pour savoir si cela est une vraie adresse email valable pour tous les pays 
} else if (!filter_var(($email), FILTER_VALIDATE_EMAIL)) {
  $error = "0-10";
  
  //on teste afin de savoir si c'est bien un code postal dans le champs adresse valable pour tous les pays 
}else if ($b != filter_var($b, FILTER_VALIDATE_INT)) {
   $error = "0-11";
   
   //test de l'adresse il doit y avoir un numero valable pour tous les pays
}elseif (!preg_match('#[\d ]#', ($adresse))) {
  $error = "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" ) {
  $error = "0-16";
}
//je verifie si le bouton radio coche n'est pas 10
 else if ($promotioncases =="10" )  
 { $error = "0-20";}  

/**
 * GESTION DE LA LIVRAISON
 */


switch($livraison ){
    
    //on teste pour savoir si le pays est bien BE pour la belgique
    //on teste pour savoir si nous sommes bien en belgique
  case '(MONDIAL-RELAY-BELGIQUE)3 euro(s)':
    //  if(!filter_var($c, FILTER_VALIDATE_INT)){
   if($cb_PAYS != "BE"){ 
      $error = "0-8";
    }
   // if($cb_PAYS != "BE" || $cb_PAYS != "FR" ){
     // $error = "0-14";
      //}
    if($pays !== "Belgique" and $cb_PAYS == "BE"){
        $error = "0-17";
    }
     if($pays === "Belgique" and $cb_PAYS != "BE"){
        $error = "0-19";
    }
   
    break;
    
    //on teste pour savoir si le pays est bien FR pour la france 
    //on teste pour savoir si nous sommes bien en france
  case '(mondial relay-FRANCE)4 euro(s)':
      if($cb_PAYS != "FR"){ 
      $error = "0-8";
    }
    //if($pays !== "France" || $cb_PAYS != "FR"){
      //  $error = "0-14";
    //}
      if($pays !== "France" and $cb_PAYS == "FR"){
        $error = "0-17";
    }
     if($pays === "France" and $cb_PAYS != "FR"){
        $error = "0-19";
    }
   
    break;
    
    //on teste pour savoir si le pays est bien LU pour le luxembourg
    //on teste pour savoir si nous sommes bien au luxembourg
  case '(mondial relay-LUXEMBOURG)3 euro(s)':
      if($cb_PAYS != "LU"){ 
      $error = "0-8";
    }
    // if($pays !== "Luxembourg" || $cb_PAYS != "LU"){
      //  $error = "0-17";
    //}
       if($pays !== "Luxembourg" and $cb_PAYS == "LU"){
        $error = "0-17";
    }
     if($pays === "Luxembourg" and $cb_PAYS != "LU"){
        $error = "0-19";
    }
    break;
    
    //on teste pour savoir si le pays est bien NL pour les pays-bas
    //on teste pour savoir si nous sommes bien aux pays pas
   case '(MONDIAL-RELAY-PAYS-BAS)5 euro(s)':
      if($cb_PAYS != "NL"){ 
      $error = "0-8";
    }
    // if($pays !== "Pays-bas" || $cb_PAYS != "NL"){
      //  $error = "0-17";
    //}
        if($pays !== "Pays-bas" and $cb_PAYS == "NL"){
        $error = "0-17";
    }
     if($pays === "Pays-bas" and $cb_PAYS != "NL"){
        $error = "0-19";
    }
    break;
    
    //********************************
    //on teste les envois postaux******
    //**********************************
    //si on choisit frais de livraison pays le pays choisi doit etre pays bas 
  case '(POSTE-ENVELLOPPE-PAYS-BAS)2 euro(s)':
    if( $pays != "Pays-bas") {
      $error = "0-17";
    }
    break;

//si on choisit frais de livraison pays le pays choisi doit etre belgique et les 3 point doivent etre remplit
  case '(POSTE-COLIS-BELGIQUE_point)5.50 euro(s)':
    if($pays != "Belgique") {
      $error = "0-17";
    }
    if( !$adressepoint || !$cppoint || !$villepoint) {
      $error = "0-9";
    }
    break;
    
    //si on choisit frais de livraison pays le pays choisi doit etre belgique
  case '(POSTE-ENVELLOPPE-belgique)1 euro(s)':  
  case '(POSTE-COLIS-BELGIQUE)6.50 euro(s)':
    if($pays != "Belgique") {
      $error = "0-17";
    }
    break;
    
    //si on choisit frais de livraison pays le pays choisi doit etre luxembourg
  case '(POSTE-ENVELLOPPE-LUXEMBOURG)1.50 euro(s)':
    if($pays != "Luxembourg") {
      $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
}
    //********************************
    //fin teste les envois postaux******
    //**********************************

// AUTRE ERREUR
//message alertes si autre probleme









if ($promotioncases =="20" && ($nouveau_prix_promo_int !=  $prix_total_int )  )
{  $error = "0-12";}  



// Dernier code d'erreur si c'est pas bon pour la commande
else if (!$commande) {
  $error = "0-21";
}  

mais cela ne m'intéresse pas que le contrôle du bouton radio soit a cet endroit

0
jordane45 Messages postés 38162 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 mai 2024 4 658
23 août 2022 à 16:59

Ben oui.. mais le code est lu de haut en bas . Et il s'arrête donc sur la première condition valide...

A toi d'organiser tes tests dans l'ordre que tu souhaites...

0
flexi2202 Messages postés 3798 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 3 mai 2024 187 > jordane45 Messages postés 38162 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 mai 2024
Modifié le 23 août 2022 à 17:15

oui jordane on est d'accord mais lorsque je test le premier code 

Ma condition 

//je verifie si le bouton radio coche n'est pas 10
 else if ($promotioncases =="10" )  
 { $error = "0-20";}  

passe non pas dans les dernières conditions mais en premier 

Par contre contre si je la place au dessus du switch elle garde sa place a être exécutée avant les conditions du switch 

mais je désire qu'elle soie exécutée après le switch  

0
jordane45 Messages postés 38162 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 mai 2024 4 658 > flexi2202 Messages postés 3798 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 3 mai 2024
23 août 2022 à 17:37

C'est quoi cette histoire de premier ... ??

Les conditions sont testées dans l'ordre.

Vu que tu utilises une seule variable $error   ..  elle prend la dernière valeur que tu lui a affecté .. même si tu as eu d'autres erreurs avant ...

En gros..

$error = 1;

//je fais d'autres truc . et maintenant je dis
$error = 2;

//encore autre chose ..
$error = "trucmuche" ;




echo $error;  // affichera forcément le dernier renseigné ... à savoir.. trcumuche

Si tu veux pouvoir gérer plusieurs erreurs en même temps, il te faut passer non pas par une "string" .. mais par un array ..

Ou alors, pour gérer chaque erreur dans l'ordre .. penser à mettre des return/exit dans ton code dans tes if .

0
flexi2202 Messages postés 3798 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 3 mai 2024 187 > jordane45 Messages postés 38162 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 mai 2024
Modifié le 23 août 2022 à 20:03

Jordane je pense que l'on s'est mal compris 

Dans mon code la première condition est 

//si quanditee est egal a 0
if ($total_qte_bas == '0') {
  $error = "0-18";

voici mon code qui fonctionne de façon correcte c'est a dire que l'ordre des conditions est respectée

Car j'ai enlevé la partie du switch

//debut des messages d'alertes
//si quanditee est egal a 0
if ($total_qte_bas == '0') {
  $error = "0-18";
 
//si le choix du mode de livraison est le champ cache on affiche une alerte
} else if ($livraison == '() euro(s)') {
  $error = "0-15";
  
//on verifie le reste des donnees postale
}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";
  
//je teste pour savoir si cela est une vraie adresse email valable pour tous les pays 
} else if (!filter_var(($email), FILTER_VALIDATE_EMAIL)) {
  $error = "0-10";
  
  //on teste afin de savoir si c'est bien un code postal dans le champs adresse valable pour tous les pays 
}else if ($b != filter_var($b, FILTER_VALIDATE_INT)) {
   $error = "0-11";
   
   //test de l'adresse il doit y avoir un numero valable pour tous les pays
}elseif (!preg_match('#[\d ]#', ($adresse))) {
  $error = "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" ) {
  $error = "0-16";
}
//je verifie si le bouton radio coche n'est pas 10
 else if ($promotioncases =="10" )  
 { $error = "0-20";}  


else if ($promotioncases =="20" && ($nouveau_prix_promo_int !=  $prix_total_int )  )
{  $error = "0-12";}  



// Dernier code d'erreur si c'est pas bon pour la commande
else if (!$commande) {
  $error = "0-21";
}  

//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;
  //sinon on insert en bdd et ton envoi de mail
}else{

par contre si je laisse le code avec le switch comme ci dessous 

la condition 

//je verifie si le bouton radio coche n'est pas 10
 else if ($promotioncases =="10" )  
 { $error = "0-20";}  

est exécutée en premier 

/debut des messages d'alertes
//si quanditee est egal a 0
if ($total_qte_bas == '0') {
  $error = "0-18";
 
//si le choix du mode de livraison est le champ cache on affiche une alerte
} else if ($livraison == '() euro(s)') {
  $error = "0-15";
  
//on verifie le reste des donnees postale
}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";
  
//je teste pour savoir si cela est une vraie adresse email valable pour tous les pays 
} else if (!filter_var(($email), FILTER_VALIDATE_EMAIL)) {
  $error = "0-10";
  
  //on teste afin de savoir si c'est bien un code postal dans le champs adresse valable pour tous les pays 
}else if ($b != filter_var($b, FILTER_VALIDATE_INT)) {
   $error = "0-11";
   
   //test de l'adresse il doit y avoir un numero valable pour tous les pays
}elseif (!preg_match('#[\d ]#', ($adresse))) {
  $error = "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" ) {
  $error = "0-16";
}

/**
 * GESTION DE LA LIVRAISON
 */


switch($livraison ){
    
    //on teste pour savoir si le pays est bien BE pour la belgique
    //on teste pour savoir si nous sommes bien en belgique
  case '(MONDIAL-RELAY-BELGIQUE)3 euro(s)':
    //  if(!filter_var($c, FILTER_VALIDATE_INT)){
   if($cb_PAYS != "BE"){ 
      $error = "0-8";
    }
   // if($cb_PAYS != "BE" || $cb_PAYS != "FR" ){
     // $error = "0-14";
      //}
    if($pays !== "Belgique" and $cb_PAYS == "BE"){
        $error = "0-17";
    }
     if($pays === "Belgique" and $cb_PAYS != "BE"){
        $error = "0-19";
    }
   
    break;
    
    //on teste pour savoir si le pays est bien FR pour la france 
    //on teste pour savoir si nous sommes bien en france
  case '(mondial relay-FRANCE)4 euro(s)':
      if($cb_PAYS != "FR"){ 
      $error = "0-8";
    }
    //if($pays !== "France" || $cb_PAYS != "FR"){
      //  $error = "0-14";
    //}
      if($pays !== "France" and $cb_PAYS == "FR"){
        $error = "0-17";
    }
     if($pays === "France" and $cb_PAYS != "FR"){
        $error = "0-19";
    }
   
    break;
    
    //on teste pour savoir si le pays est bien LU pour le luxembourg
    //on teste pour savoir si nous sommes bien au luxembourg
  case '(mondial relay-LUXEMBOURG)3 euro(s)':
      if($cb_PAYS != "LU"){ 
      $error = "0-8";
    }
    // if($pays !== "Luxembourg" || $cb_PAYS != "LU"){
      //  $error = "0-17";
    //}
       if($pays !== "Luxembourg" and $cb_PAYS == "LU"){
        $error = "0-17";
    }
     if($pays === "Luxembourg" and $cb_PAYS != "LU"){
        $error = "0-19";
    }
    break;
    
    //on teste pour savoir si le pays est bien NL pour les pays-bas
    //on teste pour savoir si nous sommes bien aux pays pas
   case '(MONDIAL-RELAY-PAYS-BAS)5 euro(s)':
      if($cb_PAYS != "NL"){ 
      $error = "0-8";
    }
    // if($pays !== "Pays-bas" || $cb_PAYS != "NL"){
      //  $error = "0-17";
    //}
        if($pays !== "Pays-bas" and $cb_PAYS == "NL"){
        $error = "0-17";
    }
     if($pays === "Pays-bas" and $cb_PAYS != "NL"){
        $error = "0-19";
    }
    break;
    
    //********************************
    //on teste les envois postaux******
    //**********************************
    //si on choisit frais de livraison pays le pays choisi doit etre pays bas 
  case '(POSTE-ENVELLOPPE-PAYS-BAS)2 euro(s)':
    if( $pays != "Pays-bas") {
      $error = "0-17";
    }
    break;

//si on choisit frais de livraison pays le pays choisi doit etre belgique et les 3 point doivent etre remplit
  case '(POSTE-COLIS-BELGIQUE_point)5.50 euro(s)':
    if($pays != "Belgique") {
      $error = "0-17";
    }
    if( !$adressepoint || !$cppoint || !$villepoint) {
      $error = "0-9";
    }
    break;
    
    //si on choisit frais de livraison pays le pays choisi doit etre belgique
  case '(POSTE-ENVELLOPPE-belgique)1 euro(s)':  
  case '(POSTE-COLIS-BELGIQUE)6.50 euro(s)':
    if($pays != "Belgique") {
      $error = "0-17";
    }
    break;
    
    //si on choisit frais de livraison pays le pays choisi doit etre luxembourg
  case '(POSTE-ENVELLOPPE-LUXEMBOURG)1.50 euro(s)':
    if($pays != "Luxembourg") {
      $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
}
    //********************************
    //fin teste les envois postaux******
    //**********************************

// AUTRE ERREUR
//message alertes si autre probleme



//je verifie si le bouton radio coche n'est pas 10
 if ($promotioncases =="10" )  
 { $error = "0-20";}  


else if ($promotioncases =="20" && ($nouveau_prix_promo_int !=  $prix_total_int )  )
{  $error = "0-12";}  



// Dernier code d'erreur si c'est pas bon pour la commande
else if (!$commande) {
  $error = "0-21";
}  

//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;
  //sinon on insert en bdd et ton envoi de mail
}else{

donc ce qui dérange dans mon code c'est ce switch

0
jordane45 Messages postés 38162 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 mai 2024 4 658 > flexi2202 Messages postés 3798 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 3 mai 2024
Modifié le 23 août 2022 à 20:17

Si si.. on s'est très bien compris ... enfin.. moi.. j'ai très bien compris...

Donc :

Ton code, pour tes conditions, est découpé en trois morceaux

- Un premier bloc de IF/ELSEIF ( qui rempli la variable $error )

- Un switch ( qui, selon les conditions pourrais lui aussi remplir $error )

- Et enfin, un troisième bloc IF qui rempli la variable $error

Alors que sans le switch .. tu n'as plus qu'un seul bloc IF/ELSEIF ... il ne rempli donc qu'une seule fois la variable $error

Donc.. soit tu appliques ce que je t'ai déjà répondu .. soit, tu ajoutes à ton deux bloc IF une condition supplémentaire permettant de vérifier si la variable $error est vide ou non..

1