enigme pour moi avec un controle

enigme pour moi avec un controle - PHP - Programmation

Marsh Posté le 07-11-2004 à 15:23:53    

voilà je fais plusieurs controls pour des variables passées en POST et il y en a un que je ne comprends pas, qui ne fonctionne pas comme je voudrai.

Code :
  1. $message = "";
  2. echo $_POST['an'] // il m'affiche 2004
  3. if (!is_int($_POST['an']))
  4. $message = "Erreur dans l'année";
  5. echo $message; //là il m'affiche Erreur dans l'année alors que 2004 est bien un entier !!!


je ne comprends pas


Message édité par Scarf3ss3 le 07-11-2004 à 15:24:11
Reply

Marsh Posté le 07-11-2004 à 15:23:53   

Reply

Marsh Posté le 07-11-2004 à 17:33:41    

Non, un résultat provennant d'un form sera toujours une chaine, l'html ne typant pas plus que php ses données

Reply

Marsh Posté le 07-11-2004 à 17:55:36    

Tu dois vérifier ça avec une regex.

Reply

Marsh Posté le 07-11-2004 à 18:09:10    

is_numeric() à la place de is_int() devrait le faire.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 07-11-2004 à 18:11:45    

Sielfried a écrit :

is_numeric() à la place de is_int() devrait le faire.

On en apprend tout les jours. :jap:  
Quoique la regex offre plus de souplesse. :o

Reply

Marsh Posté le 11-11-2004 à 17:36:53    

Code :
  1. function isInteger($Value)
  2. {
  3.      if (preg_match("[\d+]", $Value) != 0)
  4.      {
  5.          // The value must not have a '.' or ',' to be an integer
  6.          if ((preg_match("[\.]", $Value) == 0) && (preg_match("[,]", $Value) == 0))
  7.          {
  8.              // The value is an integer
  9.              return TRUE;
  10.          }
  11.      }
  12.      // The values isn't an integer
  13.      return FALSE;
  14. }


 
Bon, y'a sans doute mieux comme code, mais ça marche bien :)

Reply

Marsh Posté le 12-11-2004 à 14:32:21    

Code :
  1. function isInteger($var) {
  2.    if (is_int($var)) return true;
  3.    if (is_string($var) and $var === (string)(int) $var) return true;
  4.    return false;
  5. }

Reply

Marsh Posté le 12-11-2004 à 22:07:56    

Vous avez tous quelque chose contre is_numeric ou ?


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 13-11-2004 à 08:44:52    

Ben le is_numeric il va pas te dire si c'est un entier :)

Reply

Marsh Posté le 13-11-2004 à 08:56:41    

Ah oui, en effet. :o
 
Je propose ça alors :
 

Code :
  1. function is_integer($var) {
  2.    return is_numeric($var) && $var == intval($var);
  3. }


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Sujets relatifs:

Leave a Replay

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