Tester si $_POST est un nombre entier

WRInaute impliqué
Bonjour,

Je voudrais tester si un $_POST est un nombre entier ou pas.

J'ai essayé cette ligne : if (!is_int($_POST['amount'])) { echo "- Le montant doit être un nombre entier.<br>"; }

Mais visiblement cela ne fonctionne pas. Si amout = 100 ca m'affiche quand même le echo.

Pouvez-vous m'aider ?

Merci
 
WRInaute discret
Les variables stockées dans $_POST sont du type chaîne.
Pour savoir si une chaîne de caractère représente un entier, c'est la fonction is_numeric qu'il faut utiliser.
 
WRInaute impliqué
bah non, vu que je veux accepter uniquement les nombres entier. Genre accepter 100 et ne pas accepter 100.99 par exemple

Is_numeric ne fait pas la différence entre les 2. C'est un nombre dans les 2 cas.
 
WRInaute passionné
utilise un preg_match :
Code:
if (!preg_match('/^[0-9]+$/', $_POST['amount'])) { echo "- Le montant doit être un nombre entier.<br>"; }
 
WRInaute accro
sff a dit:
bah non, vu que je veux accepter uniquement les nombres entier. Genre accepter 100 et ne pas accepter 100.99 par exemple
applique les 2 fonctions i
is_numeric pour savoir si la chaine représente un nombre, puis is_int pour avoir s'il est entier
Code:
if (!is_numeric ($_POST['amount'])||!is_int($_POST['amount'])) { echo "- Le montant doit être un nombre entier.<br>"; }
 
WRInaute discret
sff a dit:
bah non, vu que je veux accepter uniquement les nombres entier. Genre accepter 100 et ne pas accepter 100.99 par exemple

Is_numeric ne fait pas la différence entre les 2. C'est un nombre dans les 2 cas.
En effet. Une fois que tu sais que la chaîne est bien un nombre, tu peux tester que c'est un entier comme ceci :
Code:
if (!is_numeric($_POST['amount']) || $_POST['amount'] != round($_POST['amount'])) { 
echo "- Le montant doit être un nombre entier.<br>";
}
Sinon je suis tombé sur la fonction ctype_digit que je ne connaissais pas et qui devrait répondre à ta question http://www.php.net/manual/fr/function.ctype-digit.php
 
Discussions similaires
Haut