Forum Programmation.php tester si la valeur saisie dans un formulaire est un entier

Posté par  .
Étiquettes : aucune
0
14
nov.
2005
Je souhaite limiter la saisie d'un formulaire uniquement à des valeurs entières.

J' ai un formulaire dans lequel l' utilisateur entre un nombre qui doit être entier avec input type="text" name="nbre"

Le script qui récupère les données du formulaire est:

// lireFormu.php
if ( is_numeric($POST_['nbre'] ) ) {
echo "Ok";
} else {
echo "Erreur";
}


Si l' utilisateur entre un nombre réel 1.5 , j'obtiens le message Ok

Merci
  • # is_int peut etre??

    Posté par  . Évalué à 1.

    Je ne connais pas trop php mais d apres le manuel

    bool is_numeric ( mixed var )

    Finds whether the given variable is numeric. Numeric strings consist of optional sign, any number of digits, optional decimal part and optional exponential part. Thus +0123.45e6 is a valid numeric value. Hexadecimal notation (0xFF) is allowed too but only without sign, decimal and exponential part.

    Peut etre que tu devrais utliser is_int()/is_integer()

    A++

    Cyril
  • # De rien

    Posté par  (site Web personnel) . Évalué à 2.

    Elle est où la question ?

    Sinon voilà la réponse http://fr2.php.net/manual/fr/function.is-int.php

    L'association LinuxFr ne saurait être tenue responsable des propos légalement repréhensibles ou faisant allusion à l'évêque de Rome, au chef de l'Église catholique romaine ou au chef temporel de l'État du Vatican et se trouvant dans ce commentaire

  • # un conseil au passage.

    Posté par  . Évalué à 2.

    la reponse a ete donné plus haut, mais je me permet de te conseiller de passer tout ce que tu receupere (post/get...) a travers une petite focntione de nettoyage tel que strip_tags() pour eviter que l'utilisateur te saisisse du code html (par exemple du javascript qui s'executera chez le client dès que tu fera un simple echo $_POST['nbre'];

    ex :
    $nbre=strip_tags($_POST['nbre']);
    // a partir de là on utilise $nbre et non plus $_POST['nbre']


    faire une petite fonction qui fait celà est pas mal non plus, comme ca tu pourra traiter (par exemple) le SQLinjection a un seul endroit...

    voilà.
    • [^] # Re: un conseil au passage.

      Posté par  . Évalué à 1.

      Les données récupérés d'un formulaire sont des chaînes de caractères, le méthode is_int ne permet pas de tester qu'une chaîne de caractères est un entier
      <?php
             $val="123";
             var_dump(is_int($val));
      ?>
      affiche: bool(false) il faut comme indiqué dans la doc utiliser is_numeric
       <?php
             $val="123";
             var_dump(is_numeric($val));
      ?>
      affiche: bool(true) Mais je souhaite limiter la saisie aux nombres entiers
      <?php
             $val="123.5";
             var_dump(is_numeric($val));
      ?>
      affiche: bool(true) Il faut complèter la condition is_numeric($val) par quoi ?
      • [^] # Re: un conseil au passage.

        Posté par  . Évalué à 2.

        un truc un peu gruik (j'ai honte).
        pour savoir si c'est un entier, c'est que sa partie decimale est nulle.
        je ne connais pas la fonction en php qui donne la partie decimale.
        mais par soustraction avec la partie entiere tu peux le faire, voir même encore plus simplement, par comparaison. voici une fonction pour celà : ceil
        exemple.

        if(is_numeric($a) && $a==ceil($a)) { echo "$a est un entier, non?"; }

        j'ai même pas testé, c'est juste une idée...

        et au fait, tu a essayé u truc du genre :

        if(is_numeric($a) && is_int(0+$a)) { echo "$a est un entier, non?"; }

        j'ai "convertie" la chaine en nombre en additionnant 0...

        enfin des astuces je suis sur qu'on peu en trouver plein plein plein...

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.