Vérifier si un nombre posté via un formulaire est un entier

Eléphant du PHP | 76 Messages

05 nov. 2012, 19:39

Bonjour,

Comment vérifier si un nombre posté via un formulaire est un entier (par un nombre a ,)?

J'essai comme ceci :
if(is_numeric($_POST['quantite'])
Je vérifie s'il s'agit bien d'un nombre, mais je peu faire 1,5. Ce que je ne veux pas...

Quelqu'un a une idée?

Merci
Modifié en dernier par rickphp le 05 nov. 2012, 19:48, modifié 1 fois.

ViPHP
xTG
ViPHP | 7331 Messages

05 nov. 2012, 19:41

is_int() :)

Eléphant du PHP | 76 Messages

05 nov. 2012, 19:49

D'accord je vais essayer cela :)

Eléphant du PHP | 229 Messages

05 nov. 2012, 20:51

Bonjour,

ou if(gettype()==int){...;}

C'est plus long donc je vois pas l'intérêt :=)

ViPHP
xTG
ViPHP | 7331 Messages

05 nov. 2012, 21:09

Non ça par contre ça ne fonctionnera pas.
Car tout ce qui est transmis par GET ou POST est de type String. ;)

ViPHP
AB
ViPHP | 5818 Messages

05 nov. 2012, 23:52

Non ça par contre ça ne fonctionnera pas.
Car tout ce qui est transmis par GET ou POST est de type String. ;)
Ben oui mais j'ai bien peur que pour les mêmes raisons is_int() ne soit pas adapté pour tester une entrée de formulaire :|

ViPHP
AB
ViPHP | 5818 Messages

06 nov. 2012, 00:06

Je vérifie s'il s'agit bien d'un nombre, mais je peu faire 1,5. Ce que je ne veux pas...
Deux solutions.
Soit tu veux au final avoir un entier et tu peux faire :
$nb = is_numeric($_GET['toto']) ? intval($_GET['toto']) : 'valeur par défaut';
Soit tu veux tester que la valeur rentrée est bien un entier et tu peux faire :
$nb = is_numeric($_GET['toto']) && intval($_GET['toto']) == $_GET['toto'] ? $_GET['toto'] : 'pas bon';

Eléphant du PHP | 343 Messages

06 nov. 2012, 00:06

regex? [0-9]?
Développeur web

ViPHP
AB
ViPHP | 5818 Messages

06 nov. 2012, 00:08

regex? [0-9]?
Oui sans soute ça pourrait le faire, mais à moins d'avoir des besoins particuliers il vaut mieux éviter d'utiliser un regex pour si peu :wink:

Eléphant du PHP | 343 Messages

06 nov. 2012, 00:25

En effet, je proposais juste une solution alternative ;)
Développeur web

Eléphanteau du PHP | 25 Messages

06 nov. 2012, 00:45

hello,

A ta place j'utiliserais la fonction ctype_digit() pour vérifier si ta chaine contient seulement des chiffres compris entre 0 et 9, surtout dans ton cas ou on parle de quantité donc forcement nulle ou positive.

ViPHP
AB
ViPHP | 5818 Messages

06 nov. 2012, 01:11

hello,
A ta place j'utiliserais la fonction ctype_digit() pour vérifier si ta chaine contient seulement des chiffres compris entre 0 et 9, surtout dans ton cas ou on parle de quantité donc forcement nulle ou positive.
tiens oui, je l'avais complètement oubliée cette fonction :) faut dire aussi que j'utilise toujours la première méthode dans mes exemples cité plus haut, donc je vérifie pas, je caste.

Eléphant du PHP | 229 Messages

06 nov. 2012, 11:10

input type="number" ?

Eléphant du PHP | 267 Messages

06 nov. 2012, 11:16

input type="number" ?
c'est du HTML5
vérification côté utilisateur donc pas fiable
mais une bonne solution alternative au JS pour améliorer l'ergonomie

ViPHP
xTG
ViPHP | 7331 Messages

06 nov. 2012, 11:16

Non ça par contre ça ne fonctionnera pas.
Car tout ce qui est transmis par GET ou POST est de type String. ;)
Ben oui mais j'ai bien peur que pour les mêmes raisons is_int() ne soit pas adapté pour tester une entrée de formulaire :|
Blackout dans ma tête. u_u