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 :

filter_var et la saisie d'entiers


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut filter_var et la saisie d'entiers
    Bonjour,

    Pour traiter la saisie d'une date de jour (comprise entre 1 et 31) j'utilise cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $jour  = filter_var($_POST['jour'], FILTER_VALIDATE_INT, array('options'=>array('min_range'=>1, 'max_range'=>31)));
    Le problème est lorsque la saisie commence par un "0" ("01" au lieu de "1"), la ligne de code ci-dessus ne l'accepte pas.

    Y aurait-il un autre moyen que d'écrire "(int)$_POST['jour']" (qui marche certe) en jouant sur les paramètres de filter_var ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $jour  = filter_var((int)$_POST['jour'], FILTER_VALIDATE_INT, array('options'=>array('min_range'=>1, 'max_range'=>31)));
    merci pour votre aide

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 264
    Points : 141
    Points
    141
    Par défaut
    Ceci ajoute "0" devant sur les chiffres de 1-9

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $filter = sprintf("%02d", $jour);

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta réponse, mais j'ai dû mal m'expliquer :

    le soucis est que quand on POST depuis un formulaire la valeur "01" (saisissant une date, beaucoup on l'habitude de taper celles-ci systématiquement à deux chiffres même pour les nombres de 0 à 9), et que j'utilise filter_var avec la constante FILTER_VALIDATE_INT, celui-ci ne reconnaît pas un entier pour la saisie et me retourne false...

    Ma solution est de placer "(int)" devant le $_POST :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $jour  = filter_var((int)$_POST['jour'], FILTER_VALIDATE_INT, array('options'=>array('min_range'=>1, 'max_range'=>31)));
    Finalement, j'ai une solution, mais j'aurais voulu approfondir mes connaissances concernant la fonction filter_var et savoir s'il y a un moyen de parer à ce problème en n'utilisant que des paramètre de cette fonction ? (en évitant FILTER_VALIDATE_REGEXP et une regex à la mort-moi-le-noeux )

Discussions similaires

  1. [Turbo Pascal] Problème de saisie d'entier
    Par zineb2012 dans le forum Turbo Pascal
    Réponses: 8
    Dernier message: 26/03/2012, 14h45
  2. Controle Saisie clavier : entier
    Par nicodn02 dans le forum C
    Réponses: 4
    Dernier message: 21/01/2009, 15h37
  3. Réponses: 2
    Dernier message: 09/04/2008, 18h20
  4. [Débutant] pb saisie d'entier au terminal
    Par bikork dans le forum Langage
    Réponses: 2
    Dernier message: 06/10/2006, 08h58
  5. Fonction pour contrôler la saisie des entiers
    Par Le Pharaon dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 28/09/2006, 14h14

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