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 :

champ numerique et !is_numeric [PHP 5.3]


Sujet :

Langage PHP

  1. #21
    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
    un peut rapide pour une première je suis arrivé a ça:
    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
     
    function verif_numpos ($varnum)
    {
    $int_options = array("options"=>array("min_range"=>0, "max_range"=>256));
    $varnum =filter_var($varnum, FILTER_VALIDATE_INT, $int_options);
    if ( is_null($varnum) or $varnum=== false)  
    {
     
    echo 'Veuillez saisir un nombre dans la case M:00-01 SVP.';
    } 
    else
    {
     
    }
    }
    // appel de la fonction						
    $var=$_POST['m'];
    verif_numpos($var);
    c'est ma première fonction mais ce qu'elle vaut !!!

  2. #22
    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
    T'as raison, c'est une m**dasse ces filtres

    oui le zero dans le champ veut dire dans mon cas que l'utilisateur est passé le champ concerné et a saisie une donnée qui est 0 , et veut dire aussi que se n'est pas un oubli de saisie de champ.
    Pour ça à mon avis il serait mieux de rajouter un flag : FILTER_NULL_ON_FAILURE.
    Enfin, théoriquement.

    Coté option :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $options = array(
        'options' => array('min_range' => 0, 'max_range' => 256),
        'flags' => FILTER_NULL_ON_FAILURE
    );

    if ( is_null($varnum) or $varnum=== false)
    Il me semble que la fonction filter_var ne retourne pas de valeur NULL (contrairement à filter_input).


    Par contre, de mon coté j'ai beau faire, je ne parviens pas à ce que la valeur 0 soit acceptée, et même une valeur négative valide comprise entre le min_range et max_range.
    Comme par exemple :
    'min_range' => -5
    'max_range' => 100
    100 est bien accepté, 101 non. Ici ça va
    Mais 0, ni -1, etc ... n'est accepté.
    Pige pas

    Tu parviens à ce que la valeur 0 soit acceptée ?

  3. #23
    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
    Run:
    Mais 0, ni -1, etc ... n'est accepté.Pige pas
    le code de la fonction marche très bien avec le zero. mais empêche les - 1 et -20....

  4. #24
    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
    le code de la fonction marche très bien avec le zero. mais empêche les - 1 et -20....
    Effectivement, ça fontionne bien, c'est moi qui trop bête.

    Je ne tenais pas compte de la valeur de retour, et comme une valeur négative tout 0 est considérée comme FALSE, forcément ...

    En faisant comme ceci c'est théoriquement correcte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $options = array(
        'options' => array('min_range' => -5, 'max_range' => 256)
    );
     
    $nombre = filter_var($nombre, FILTER_VALIDATE_INT, $options);
     
    if ($nombre !== FALSE) {
        // OK
    }
    Si on utilise filter_var, je ne vois pas l'utilité de faire un is_null().

    Puis pour le flag FILTER_NULL_ON_FAILURE, apparemment ce serait valable que pour un type booléen.

  5. #25
    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
    Salam ; RunCodePhp:
    Si on utilise filter_var, je ne vois pas l'utilité de faire un is_null().
    comme d'habitude +++1 ta raison et je suis très content d'avoir réalisé ma première fonction avec toi et stealth36
    donc la fonction est comme suite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ....
    function verif_numpos ($varnum)
    {
    $int_options = array("options"=>array("min_range"=>0, "max_range"=>256));
    $varnum =filter_var($varnum, FILTER_VALIDATE_INT, $int_options);
    if (  $varnum=== false)  
    {
    echo 'Veuillez saisir un nombre dans la case M:00-01 SVP.';
    } 
     
    }
    en résumé:
    cette fonction vérifier le contenu d'un champ input contenant une valeur numérique ( entier naturel) les valeurs négatifs et les valeurs avec des chiffres décimaux ainsi que les chaines de caractères type 2a ou a20 ou 1a2 et même le 00 ne sont pas validé (refusé par la fonction).
    le min_range et le max_range sert a définir l'interval des valeurs.
    je ne sait si j'ai bien expliqué le rôle de cette fonction , entre temps je reste ouvert pour toute amélioration du code.
    donc je préfère se contrôle en php que contrôlé la valeur avec du sql lors de l'insertion.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. definir le nbre de chiffre d'un champ numerique
    Par Renardo dans le forum Access
    Réponses: 1
    Dernier message: 22/08/2006, 00h28
  2. Modifier un champ numerique en num auto
    Par Azerty2 dans le forum Access
    Réponses: 16
    Dernier message: 18/07/2006, 22h35
  3. Champ numerique dans table liée
    Par ob1knob dans le forum Access
    Réponses: 1
    Dernier message: 06/07/2006, 16h53
  4. probleme avec des champs numeriques
    Par el_quincho dans le forum Access
    Réponses: 1
    Dernier message: 16/03/2006, 11h55
  5. Increment d'un champ numerique
    Par oazar dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/04/2004, 23h28

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