Jdoss
Membre récent

Hors-Ligne
Messages: 3

|
Bonjour à tous. Je débute dans la conception de site Web, et j'aurai besoin d'aide pour utiliser une expression régulière, dans une condition.
J'ai récemment trouvé un exercice de maths. Je ne vais pas tout vous détailler, mais dans l’énoncer de cet exercice, il y a la présence de condition : Dans un magasin, c'est les soldes, et SI on achète pour moins de 100€ (au total), on a une réduction de 10%, si on achète pour 100€ ou + de 100€, on a une réduction de 25%.
J'ai donc voulu créer un programme qui s'adapte à cet exercice. L'utilisateur rempli un formulaire simple et entre une donné dans une fenêtre, par exemple "100", et ainsi le programme charge une nouvelle page qui affiche le prix final après réduction, (donc dans mon exemple, 75).
Dans une première page, j'ai utilisé un formulaire très simple, où l'utilisateur doit insérer une valeur :
<p> Veuillez insérer le montant de vos achats : </p>
<form action="reeduction_.php" method="post"> <p> <input type="text" name="prixx" /> <input type="submit" value="Valider" /> </p> </form>
Ce formulaire fonctionne très bien. Dans une deuxième page nommé "reeduction_.php", j'ai utilisé la structure conditionnelle qui est la suivante :
<?php
if ($_POST['prixx'] < 100) { echo 'Le prix après réduction est de ' .$_POST['prixx'] * (9/10).' € !' ; }
elseif ($_POST['prixx'] >= 100) { echo 'Le prix après réduction est de ' . $_POST['prixx'] * (3/4).' € ! ' ; }
?>
Ce code fonctionne très bien. Mais maintenant, je voudrais faire en sorte que l'utilisateur ne puisse insérer que un prix, et pas autre chose qu'un prix. Par exemple, si l'utilisateur écrit "Grrr", (ceci n'est pas un prix), je voudrais afficher le message suivant : "Ceci n'est pas un prix ! Veuillez réessayer."
Pour ce faire, j'ai écrit la regex suivante qui fonctionne très bien : #^[0-9]+[,.]?[0-9]{1,2}$#
Seulement voilà, maintenant je ne sais plus comment faire.
Est-ce que quelqu'un pourrait m'aider pour que je puisse insérer et adapter cette regex dans ma structure conditionnelle ? De façon à ce que, si l'utilisateur insère "Grrr" (ou tout autre chose qui n'est pas un prix), dans mon formulaire, je puisse lui demander de recommencer.
J'ai essayé par moi même d'obtenir ce que je voulais en changeant et en adoptant le code suivant :
<?php
if (preg_match("#^[0-9]+[,.]?[0-9]{1,2}$#", $_POST['prixx'] < 100)) { echo 'Le prix après réduction est de ' .$_POST['prixx'] * (9/10).' € !' ; }
elseif (preg_match("#^[0-9]+[,.]?[0-9]{1,2}$#", $_POST['prixx'] >= 100)) { echo 'Le prix après réduction est de ' . $_POST['prixx'] * (3/4).' € ! ' ; } else { echo "Ceci n'est pas un prix ! Veuillez réessayer." ; }
?>
Seulement voilà, avec ce code, quoi que je remplisse dans le formulaire, le résultat sera toujours « Ceci n'est pas un prix ! Veuillez réessayer. » Or, si j'insère vraiment un prix juste, je souhaite avoir le prix finale après réduction, introduit dans la phrase « Le prix final après la réduction est ... »
Est-ce que quelqu'un pourrait m'aider à résoudre ce problème ?
Merci beaucoup, cordialement. |