Tester si $_POST est un nombre entier


sff
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 336
Inscription: 2 Fév 2005

Tester si $_POST est un nombre entier

Message le Lun Nov 02, 2009 14:40

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

Moof
WRInaute discret
WRInaute discret
 
Messages: 206
Inscription: 22 Mar 2003

Re: Tester si $_POST est un nombre entier

Message le Lun Nov 02, 2009 15:21

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.


sff
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 336
Inscription: 2 Fév 2005

Re: Tester si $_POST est un nombre entier

Message le Lun Nov 02, 2009 15:36

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.


forty
WRInaute passionné
WRInaute passionné
 
Messages: 1701
Inscription: 30 Oct 2008

Re: Tester si $_POST est un nombre entier

Message le Lun Nov 02, 2009 15:39

utilise un preg_match :
Code: Tout sélectionner
if (!preg_match('/^[0-9]+$/', $_POST['amount'])) { echo "- Le montant doit être un nombre entier.<br>"; }


Leonick
WRInaute accro
WRInaute accro
 
Messages: 19599
Inscription: 8 Aoû 2004

Re: Tester si $_POST est un nombre entier

Message le Lun Nov 02, 2009 16:13

sff a écrit: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: Tout sélectionner
if (!is_numeric ($_POST['amount'])||!is_int($_POST['amount'])) { echo "- Le montant doit être un nombre entier.<br>"; }

Moof
WRInaute discret
WRInaute discret
 
Messages: 206
Inscription: 22 Mar 2003

Re: Tester si $_POST est un nombre entier

Message le Lun Nov 02, 2009 17:37

sff a écrit: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: Tout sélectionner
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


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :

  • Test de redirection
    Cet outil vous permet de tester la validité d'un lien pour le référencement. Il vous indique la nature du lien (lien en dur, redirection bien gérée par les moteurs ou redirection mal gérée par les moteurs).
  • Analyse de popularité
    Cet outil vous permet d'analyser en détails la "popularité" de votre site sur Google. En plus du nombre de liens pris en compte par Google, il calcule le pourcentage de liens internes parmi tous les liens, et il affiche les premières URL trouvées.
  • Déterminer l'âge d'un site
    Cet outil vous permet de connaître une estimation de l'ancienneté d'un site : il fournit la date à laquelle Google l'a indexé la première fois (et la même chose pour archive.org).
  • Indice de densité
    Cet outil vous permet de calculer l'indice de densité d'un mot-clé d'une page web. Il est calculé à la fois pour la balise TITLE, la balise META description et l'ensemble du texte de la page.


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités