IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

tester une variable int [PHP 5.2]


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 39
    Points : 32
    Points
    32
    Par défaut tester une variable int
    Bonjour,

    Je suis assez ennuyer, je reçois des valeurs passer via formulaire pour lesquelles j'aimerais tester si il s'agit d'un entier ou pas.

    Quand je reçois une valeur sous format d'entier et que je la teste avec is_int il ne la valide pas mais la valide avec un is_string, ok je cast en mettant new_var = (int)var_formualire et la surprise même en fesant un is_int il valide des chaines de caractères.

    Est-ce que quelqu'un peut me dire comment je peux tester la différence entre un int et une chaine ?

    Merci d'avance.

  2. #2
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Tout ce qui vient des liens et formulaire sont des chaines, peu importe leur valeur/contenu.

    Il est donc normal que la fonction is_int() renvoie FALSE.
    Il y a la fonction is_numeric() qui pourrait t'être utile.

    je cast en mettant new_var = (int)var_formualire et la surprise même en fesant un is_int il valide des chaines de caractères.
    C'est normal, je dirais même logique.
    Quand on caste une chaine (quelque soit sa valeur), au bout on va avoir un nombre, un integer, c'est justement le but.
    Il est donc normal qu'après cela que la fonction is_int renvoie TRUE vu qu'on a obtenu un nombre/integer.

    Ca sous entend que lorsqu'on caste une données, la valeur obtenue peu très bien être (très) différente de sa valeur d'origine, ce qui peu fausser la logique de son programme.

    Ce n'est que si cette doit obligatoirement être un nombre/integer où là on peu caster la données sans trop de risque de valeur inattendues (encore que).

    Pour exemple, si à l'origine on a une valeur comme : 54azertyuiop
    Quand on la caste avec un integer (int), on va obtenir : 54
    On pourrait s'attendre à avoir 0 plutôt que 54.


    Sinon, il y a aussi les filtres, des fonctions comme :
    filter_input, filter_var
    Voir aussi : Filtres de validation, Filtres de nettoyage, Drapeaux des filtres
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  3. #3
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Slam (salut); il été souhaitable de voir votre code
    une petite fonction pour vérifier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    ......
    //vérification du champ numérique 
     
    function verif_numpos ($varnum)
    	{
    	$int_options = array("options"=>array("min_range"=>0, "max_range"=>999)); // entre00- et 999
    	$varnum = filter_var($varnum, FILTER_VALIDATE_INT, $int_options);
    	if ($varnum === FALSE) return false;
     
    	}
     
    // application de la fonction
    if (isset($_POST['validformulaire'])) {
            $verif = verif_numpos($_POST['ta_variable']); 
                   if ( $resultm===false) 
    			{
    			$erreurs_msg['m']='Veuillez saisir un nombre SVP.';
    			}
     
    }
    bonne utilisation

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 39
    Points : 32
    Points
    32
    Par défaut
    ok merci je vais utiliser is_numeric même si celui-ci prend également les float en considération.

    Merci pour informations.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/09/2006, 21h08
  2. tester une variable
    Par NeHuS dans le forum ASP
    Réponses: 2
    Dernier message: 17/02/2006, 15h38
  3. [coldfusion] Tester une variable
    Par mandaillou dans le forum Coldfusion
    Réponses: 1
    Dernier message: 29/09/2005, 11h04
  4. Tester une variable
    Par ZiT dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/07/2005, 14h49
  5. NASM Tester une variable d'environnement à la "compilat
    Par Pierre Maurette dans le forum Assembleur
    Réponses: 1
    Dernier message: 10/06/2005, 13h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo