[résolu]Problème de vérification d'un entier

Problème de vérification d'un entier [résolu] - PHP - Programmation

Marsh Posté le 10-06-2009 à 09:37:43    

Hello  :hello:  
 
Petit souci un peu mystérieux, j'ai le code suivant, avec une fonction destinée à vérifier si le nombre est un entier :
 

Code :
  1. function is_entier($var)
  2. {
  3. if (!filter_var($var, FILTER_VALIDATE_INT))
  4.               {
  5.               return FALSE;
  6.               }
  7.         else
  8.               {
  9.               return TRUE;
  10.               }
  11. }
  12. echo ($_POST['numero']);
  13. if (!is_entier($_POST['numero']))
  14.        {
  15.        echo "Ceci n'est pas un nombre entier";
  16.        }


 
L'echo m'affiche un "0808080808" par exemple, mais la fonction me retourne false. J'ai du mal à le comprendre vu que plus haut dans le code, elle parvient à valider des superficies, des prix, etc., sans problème. Par contre quand j'effectue un :
 

Code :
  1. $numero=0808080808;
  2. $numero=intval($numero);
  3. if (!is_entier($numero))
  4.        {
  5.        echo "Ceci n'est pas un nombre entier";
  6.        }


 
Ca fonctionne (à noter, sans le typage forcé, ça ne fonctionne de nouveau plus... alors que ça m'a validé auparavant des données issues d'un extract($_POST)).
 
Edit : je crois que je vais craquer :D Si je fais ça :
 

Code :
  1. $numero=9999999999;
  2. $superficie=99999999;
  3. if (!is_entier($superficie))
  4.        {
  5.        echo "La superficie n'est pas un nombre entier";
  6.        }
  7. if (!is_entier($numero))
  8.        {
  9.        echo "Le numéro n'est pas un nombre entier";
  10.        }


 
J'obtiens le message d'erreur dans le second cas, mais pas dans le premier.
Edit : j'ai trouvé, la variable est considérée comme un float à partir de 2^31.


Message édité par Yagmoth le 10-06-2009 à 10:22:17

---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
Reply

Marsh Posté le 10-06-2009 à 09:37:43   

Reply

Marsh Posté le 12-06-2009 à 19:11:46    

pour ta fonction is_entier, il n'est pas nécessaire d'utilise une condition !

Code :
  1. function is_entier($var) // à noter que mélanger l'anglais/français c'est moyen :/
  2. {
  3.   return filter_var($var, FILTER_VALIDATE_INT);
  4. }


mais si tu n'utilises pas la chaîne retournée tu as ctype_digit :

Code :
  1. if(!ctype_digit($superficie)) {
  2.    echo 'La superficie doit être un nombre entier';
  3. }

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed