Problème avec mes conditions en php

Résolu/Fermé
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 - Modifié le 3 août 2022 à 09:32
yg_be Messages postés 23312 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 novembre 2024 - 6 août 2022 à 20:48

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

jordane45 Messages postés 38273 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 novembre 2024 4 696
3 août 2022 à 21:35

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
yg_be Messages postés 23312 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 novembre 2024 Ambassadeur 1 552
3 août 2022 à 23:11

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
jordane45 Messages postés 38273 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 novembre 2024 4 696
4 août 2022 à 09:09

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
jordane45 Messages postés 38273 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 novembre 2024 4 696
4 août 2022 à 12:23

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

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

Posez votre question

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 

0
jordane45 Messages postés 38273 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 novembre 2024 4 696
3 août 2022 à 23:46

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...

1
yg_be Messages postés 23312 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 novembre 2024 1 552
4 août 2022 à 08:28

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) 
1

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}
0
jordane45 Messages postés 38273 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 novembre 2024 4 696
4 août 2022 à 06:37

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

1
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
4 août 2022 à 07:40

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 

0
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
4 août 2022 à 10:30

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
0
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
4 août 2022 à 10:51

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";
}
0
jordane45 Messages postés 38273 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 novembre 2024 4 696
4 août 2022 à 10:56

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 ?

1
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
Modifié le 4 août 2022 à 11:08

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

0
jordane45 Messages postés 38273 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 novembre 2024 4 696
4 août 2022 à 11:24

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 !

1
jordane45 Messages postés 38273 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 novembre 2024 4 696 > jordane45 Messages postés 38273 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 novembre 2024
4 août 2022 à 11:25

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
1
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
4 août 2022 à 11:40

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é

0
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
4 août 2022 à 11:43

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 

0
jordane45 Messages postés 38273 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 novembre 2024 4 696
4 août 2022 à 11:47

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

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

1
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
4 août 2022 à 11:54

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

0
yg_be Messages postés 23312 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 novembre 2024 1 552
4 août 2022 à 11:58
1
jordane45 Messages postés 38273 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 novembre 2024 4 696
4 août 2022 à 12:00

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) ?

1
jordane45 Messages postés 38273 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 novembre 2024 4 696 > yg_be Messages postés 23312 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 novembre 2024
4 août 2022 à 12:02

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

1
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187 > jordane45 Messages postés 38273 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 novembre 2024
4 août 2022 à 12:04

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

0
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187 > yg_be Messages postés 23312 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 novembre 2024
4 août 2022 à 12:05

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 

0
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
Modifié le 4 août 2022 à 12:07

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 

0
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
4 août 2022 à 12:11

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 
0
jordane45 Messages postés 38273 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 novembre 2024 4 696
4 août 2022 à 12:19

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 ?

1
yg_be Messages postés 23312 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 novembre 2024 1 552
4 août 2022 à 12:19

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...

1
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
4 août 2022 à 12:37

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

0
jordane45 Messages postés 38273 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 novembre 2024 4 696
4 août 2022 à 14:17

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 ?

1
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
4 août 2022 à 14:49

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

0
jordane45 Messages postés 38273 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 novembre 2024 4 696
4 août 2022 à 14:55

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
1
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187 > jordane45 Messages postés 38273 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 novembre 2024
4 août 2022 à 15:17

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";
} 
1
jordane45 Messages postés 38273 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 novembre 2024 4 696 > flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024
4 août 2022 à 15:34

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

0
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187 > jordane45 Messages postés 38273 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 novembre 2024
4 août 2022 à 15:51

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
0
jordane45 Messages postés 38273 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 novembre 2024 4 696 > flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024
5 août 2022 à 09:00

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é ??

1
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
4 août 2022 à 14:52

alors que normalement 

il devrait déjà afficher une erreur

if ($total_qte_bas == '0') {
  $error = "0-18";
0
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
4 août 2022 à 16:07

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é

0
flexi2202 Messages postés 3801 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 octobre 2024 187
5 août 2022 à 21:46

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
0
jordane45 Messages postés 38273 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 novembre 2024 4 696
5 août 2022 à 22:42

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

1