Tester numéricité entier formulaire
Résolu
[TiDi]
Messages postés
126
Date d'inscription
Statut
Membre
Dernière intervention
-
[TiDi] Messages postés 126 Date d'inscription Statut Membre Dernière intervention -
[TiDi] Messages postés 126 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
*****
Avant-propos :
J'ai longuement recherché sur Google mais je ne comprend rien. JE SUIS DEBUTANT.
*****
Problème :
L'utilisateur remplit un formulaire de type"text", pour que l'application fonctionne, il faut en priorité vérifier les données de l'utilisateur, donc en français :
Si les données du formulaire sont numériques et entiers, affiche "ok".
*****
Complication :
J'ai compris que
*****
Résultats de mes tests pour
Formulaire :
Traitement :
1 : data1 = 10 ; data2 = 10
Résultat : faux
2 : data1 = 10,2 ; data2 = 10,2
Résultat : faux
3 : data1 = iorfhu ; data2 = iufiuh
Résultat : faux
*****
Mes attentes :
- Je voudrais savoir comment tester la numéricité d'un formulaire correctement.
- Je voudrais savoir comment savoir si les données sont des nombres entiers.
- Si possible, une explication claire de votre code.
*****
Merci de votre aide.
*****
Avant-propos :
J'ai longuement recherché sur Google mais je ne comprend rien. JE SUIS DEBUTANT.
*****
Problème :
L'utilisateur remplit un formulaire de type"text", pour que l'application fonctionne, il faut en priorité vérifier les données de l'utilisateur, donc en français :
Si les données du formulaire sont numériques et entiers, affiche "ok".
*****
Complication :
J'ai compris que
is_intne marchait pas pour des données reçut d'un formulaire.
is_numericme renvoie n'importe quoi !
*****
Résultats de mes tests pour
is_numeric:
Formulaire :
<form method="post" action="test.php"> <input type="text" placeholder="Test1" name="data1"/> <input type="text" placeholder="Test2" name="data2"/> <input type="submit" class="btnLogin" value="Analyser" tabindex="8"> </form>
Traitement :
if (is_numeric($_POST)) { echo "vrai"; } else { echo "faux"; }
1 : data1 = 10 ; data2 = 10
Résultat : faux
2 : data1 = 10,2 ; data2 = 10,2
Résultat : faux
3 : data1 = iorfhu ; data2 = iufiuh
Résultat : faux
*****
Mes attentes :
- Je voudrais savoir comment tester la numéricité d'un formulaire correctement.
- Je voudrais savoir comment savoir si les données sont des nombres entiers.
- Si possible, une explication claire de votre code.
*****
Merci de votre aide.
A voir également:
- Tester numéricité entier formulaire
- Whatsapp formulaire opposition - Guide
- Flash drive tester - Télécharger - Divers Utilitaires
- Tester son pc - Guide
- Formulaire de réclamation facebook - Guide
- Formulaire de reclamation instagram - Guide
1 réponse
Salut TiDi,
https://www.php.net/manual/fr/reserved.variables.post.php
$_POST est un tableau associatif.
Pour accéder à une valeur POSTée, tu dois préciser quelle est la valeur en question à laquelle tu veux accéder.
Dal
https://www.php.net/manual/fr/reserved.variables.post.php
$_POST est un tableau associatif.
Pour accéder à une valeur POSTée, tu dois préciser quelle est la valeur en question à laquelle tu veux accéder.
if ( is_numeric($_POST["data1"]) && is_numeric($_POST["data2"] ) { echo "<p>Les deux valeurs sont numériques</p>"; }
Dal
https://www.php.net/manual/fr/function.is-int.php
https://www.php.net/manual/fr/function.is-integer.php
Il est probable que ton $_POST contienne en fait une chaîne représentant la saisie (qui peut ou non être un entier).
Tu peux le vérifier avec gettype :
https://www.php.net/manual/fr/function.gettype.php
Si c'est le cas, alors probablement :
si $_POST["data1"] contient "10" (une chaîne), le résultat de is_int va être : faux
on peut tenter de convertir la chaîne avec intval :
https://www.php.net/intval
puis, vérifier si c'est bien un entier que tu as. Mais la gestion d'erreur de intval n'est pas terrible (si la conversion ne peut être faite, cela renvoie zéro, qui.. est un entier), et de plus, si l'entrée est un nombre décimal, cela va certainement tronquer la valeur sans que tu le saches.
Une autre solution est d'utiliser des regexp, si ce que tu veux vraiment, c'est exiger que ce qui est entré soient des entiers.
Cette regexp valide :
"12"
" 12"
" 12 "
"+3"
"+ 3 "
"-4"
etc.
Si tu veux juste des entiers positifs et sans signe, la regexp devient
Dal
Pour les nombres entiers ça marche aussi !
Merci beaucoup Dal.