Utilisation de is_int ou is_intenger

Répondre
celia
le 23/10/2007 à 11:58
celia
Pour la réalisation des tests sur mon formulaire avec php, j'ai essayé is_int() ou is_integer() mais ça ne marche pas.
exemple:
if (!isset ($this->Getion) || trim($this->Getion) == "" || !is_integer($this->Getion)){
echo"message erreur!"; }

Au fait, avec ce script même qd je rentre un entier dans le formulaire , il me le prend pas et m'affiche le message d'erreur.

par contre , il me semble qu'il faut utiliser is_numeric mais ce dernier prend même des reels et flottants.

quelqu'un a une idée?
Merci d'avance
LA GLOBULE
le 23/10/2007 à 13:23
LA GLOBULE
Tu ne testerais pas ces fonctions sur du GET ou du POST ? Si oui, c'est normal que cela ne fonctionne pas, tout ce qui provient du GET ou du POSt est considéré comme étant un type string par PHP.
Cart
le 23/10/2007 à 16:53
Cart
tu peux faire un truc du genre

is_numeric() && !is_float()

ca test si c un numeric et si ce nest pas un nombre a virgule =]
LupusMic
le 24/10/2007 à 10:16
LupusMic
(Cart) Non.

Je vais préciser ce qu'à dit La Globule. Une variable en PHP est typée.

$var = 3 ;
echo '$var ' (is_int($var) ? 'est' : 'n\'est pas') un nombre ;
echo '$var ' (is_int($var) ? 'est' : 'n\'est pas') un nombre ;

$var = '3'
echo '$var ' (is_int($var) ? 'est' : 'n\'est pas') un nombre ;


Dans mon exemple, $var est tantôt un entier, tantôt une chaine... représentant un entier. C'est ce qu'il faut comprendre ici : faire la distinction entre un nombre et une chaine représentant un nombre.

Or, comme le disait La Globule, le tableau $_POST ne contient que des chaines (comment saurait-il qu'il lui faut préparer un entier plutôt qu'une chaîne ?).

Donc il faut utiliser une fonction qui détermine si le contenu de la chaine est un nombre.

Il y a alors plusieurs tests possibles :
$var == (integer) $var

ereg('^\d+$', $var) > 0

preg_match('^\d+$', $var) > 0
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours