Impossible de faire fonctionner une condition
Résoluflexi2202 Messages postés 3822 Date d'inscription Statut Membre Dernière intervention -
bonjour a tous
Doucement mais surement je finalise mon bon de commande
Ayant encore une fois cherché tout un week end
je me remets a vous , car j'ai des soucis avec une condition
lorsque je clic sur commander
j'ai bien dans console ces informations
prix_depart "27.5"
promotioncases "20" //qui est le choix du bouton radio
promotionpourcentageinverse "2.20" qui sert pour ma condition en php
promotionpourcentage "19.80"qui sert pour ma condition en php
promotion "10" qui est un code pour une condition
j'ai aussi lorsque je fais des var_dump de ces valeurs
var_dump($prix_depart);// me retourne string(4) "27.5" var_dump($promotion);// me retourne string(2) "10" var_dump($promotionpourcentageinverse);//me retourne string(4) "2.20" var_dump($promotionpourcentage);//me retourne string(5) "19.80" var_dump($promotioncases);//me retourne string(2) "20" //le seul moyen que j'ai trouve pour que mes modals fonctionnent //$totalpourcentage=$promotionpourcentage + $promotionpourcentageinverse ; $totalpourcentage=(float)$promotionpourcentage + (float)$promotionpourcentageinverse ; var_dump($totalpourcentage);//float(22)
donc tout ce passe bien
je commence par une première condition qui fonctionne
je verifie que le bouton radio coche ne soit pas celui qui est cache else if ($promotioncases == '10' ) { $error = "0-20";}
une deuxième et troisième qui fonctionnent
// si le bouton radio 2 qui indique que l'utilisateur choisit un code promo est egal a 20 et que le code de promotion est absent (alors message ) elseif ( $promotioncases == '20' and $promotion == '' ) { $error = "0-12";} // si le bouton radio 2 qui indique que l'utilisateur choisit un code promo est egal a 20 et que le code de promotion est 0 (alors message ) elseif ( $promotioncases == '20' and $promotion == '0' ) { $error = "0-12";}
ensuite viennent les deux qui ne fonctionnent pas
je veux que si l'utilisateur choisisse le promotioncases 20 et le code promo 0 ou vide et que le prix de départ ne soit pas égal a totalpourcentage il puisse y avoir une erreur
// si le bouton radio 2 qui indique que l'utilisateur choisit un code promo est egal a 20 et que le code de promotion est absent et que le prix de depart est different de totalpourcentage (alors message ) elseif (( $promotioncases == '20' and $promotion == '0' ) and ($prix_depart <> $totalpourcentage)) { $error = "0-14";} // si le bouton radio 2 qui indique que l'utilisateur choisit un code promo est egal a 20 et que le code de promotion est 0 et que le prix de depart est different de totalpourcentage (alors message ) elseif (( $promotioncases == '20' and $promotion == '' ) and ($prix_depart <> $totalpourcentage)) { $error = "0-14";}
Mais elles ne retournent aucune erreur alors qu'en principe elles devraient d'après les données recueillies
je sais que je peux pas mélanger des floats et des string
Mais pour que mes fenêtres modals puissent apparaître je dois écrire des floats dans le calcul de totalpourcentage
Je m'en remets a vous
car je ne sais plus quoi essayer après des dizaines et des dizaines de tests et de constructions de tests différents
- Impossible de faire fonctionner une condition
- Excel cellule couleur si condition texte - Guide
- Comment faire fonctionner le chromecast - Guide
- Excel condition ou - Guide
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
- Notice de fonctionnement - Guide
4 réponses
Bonjour,
En PHP, utilise de préférence le && au lieu de and
Et quand tu n'as que des "and" .. pas besoin de parenthèses pour priosier.
Et enfin.. le "différent" ( comme je te l'ai déjà dit il me semble) se teste avec le "not equal" : != ou !== et pas les <>
puisque 19.80 + 2.20 est égal a 22
Oh, ce n'est pas si sûr que cela : 19.80 + 2.20 vaut probablement 21.9999999. Revoyez votre cours sur les nombres flottants.
Malheureusement non
alors que la condition n'est pas respectée il affiche le message d'erreur
pourtant lorsque je vois cette copie d'écran
prix_depart "22"
promotioncases "20"
promotionpourcentageinverse "2.20"
promotionpourcentage "19.80"
promotion "10"
avec une telle condition qui n'est pas réunie cela devrait fonctionner je ne devrais pas voir un message d'erreur de modal
puisque 19.80 + 2.20 est égal a 22 et mon erreur devrait s'afficher si justement si ils ne sont pas égaux

Oui Jordanne et pour cela que j'ai rajouter une condition avec ce if
Mais ca ne fonctionne toujours pas
après une montagne de test je viens de me rendre compte d'une anomalie
Mes conditions semblent fonctionner tant que je ne clic pas sur un bouton radio d'un autre groupe en l'occurrence celui des livraisons
je m'explique
ma première condition est de savoir si oui ou non il y a des articles dans le panier
ma deuxième condition est de savoir si l'utilisateur a cocher un autre bouton radio que le premier de mon groupe promotion
voici les deux conditions
//si quanditee est egal a 0 if ($total_qte_bas == '0') { $error = "0-18";} //je verifie si le bouton avec la valeur 10 n'est pas coche else if ($promotioncases == '10') { $error = "0-20";}
ensuite vient seulement les tests ou j'ai des soucis
Par accident j'ai fait un test
si je clique sur commander
on me demande bien d'ajouter des articles
ensuite je clic sur commander
L'erreur survient me demandant de choisir autre chose que le bouton avec la valeur 10
Donc tout va bien ....
Par contre dans le deuxième test
Je clique d'abord sur ma première liste de bouton radio qui concerne la livraison et j'en coche 1 ,avant toute chose
puis je clic sur commander
j'ai bien l'erreur que je dois ajouter des articles
Je les ajoutes
ensuite je clic sur commander
Et la surprise il passe la condition du bouton radio pour le code promo
Voici donc la manière dont le premier bouton radio est récupéré en javascript donc le bouton des livraison
/on commence par recuperer des informations lorsque on clic sur un choix de livraison const cases = document.querySelectorAll('input[name="choix_livraison"]'); for (const x of cases) {//debut const x of cases if (x.checked) { //si une case est cochee on recupere 2 variables let nom_choix_livraison = x.dataset.nom; let prix_choix_livraison = x.value; //on definit le prix total et la livraison let prix_et_livraison = (( (MonPanier.totalpanier()))) + Number(prix_choix_livraison) ;
et voici le bouton radio
<div class="col-sm "> <input type="radio" name="choix_livraison" class="choix_livraison articleBtnposteinvisible" checked="checked" data-lang="de" data-nom="" value="" onclick="ouvreMaJolieAlertposte(event,' ');"> Par poste enveloppe (je ne suis pas responsable des pertes éventuelles) 1,10 euros </div>
Ensuite il y a les boutons radios pour afficher ou cacher le code promo
<label> <!-- je cache le premier bouton --> <input type="radio" name="promotioncases" id="black" data-target="10" value="10" checked style="display: none;" /> </label> <label> <!-- si ce bouton est sélectionner une div apparaît avec le le input pour rentrer le code promo --> <input type="radio" name="promotioncases" id="red" data-target="20" value="20">j'ai un code </label> <div id="20" class="descendre"> j'ai sélectionne 2 <form name="form" id="forms"> Enter name: <input type="text" id="name"> <input type="button" value=" Click Up"> <p id="prix_depart_promo"></p> <p id="print"></p> </div> <label> <input type="radio" name="promotioncases" id="vert" data-target="30" value="30" />Pas de code </label>
Et voici la manière dont je le traite
var promotioncases = document.querySelector('input[name=promotioncases]:checked').value;
je ne vois pas trop comment ces boutons peuvent se mélanger
Ce n'est pas avec des petits bouts de code pris par-ci par-là que je vais être capable de comprendre le bordel de ton script...
Quoi qu'il en soit il semble donc bien que ça ne soit pas un souci au niveau des conditions ( sujet initial de ta question) mais un problème de fonctionnement, de logique, de ton code.
Je t'invite donc à analyser le fonctionnement de ton code pour déterminer à quel endroit les variables restent mémorisées alors qu'elle ne le devraient pas
Merci pour la réponse jordane
c'est vrai que des petits morceaux de code ne vont pas aider
Mais a la longue de faire des ajout mon code devient de plus en plus long
Je vais donc repartir sur une bonne sauvegarde de mon site et voir comment mettre en place ce coupon
Je m'attendais pas a autant de de difficultés
existe t il un moyen pour connaître si les variables restent en mémoire
bonjour jordane
Merci pour la réponse
j'ai déjà essayer aussi comme tu expliques mais cela ne me retourne pas l'erreur de la modal
mais dans mon code qui ne fonctionne pas pas je n'avais pas que que des AND puisque j'avais aussi un operateur d'inégalité
voici mon dernier essai
Mais sans succès
revient au même que
Quoi qu'il en soit, si tu n'entres pas dans ces elseif .. c'est que tes variables ne contiennent pas c eque tu penses...
Fais donc des var_dump de chacune de ces variables AVANT le IF et regarde ce que ça te retourne...
Merci jordane
voila mon code avec les var_dump
et voici le code php
Pour rappel
Normal que tu n'entres pas dans ton elsif puique ta variable n'est pas vide ni à zéro