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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 : 54
    Localisation : Algérie

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

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut champ numerique et !is_numeric
    Salam ; j'ai un formulaire avec des champs numériques positives (0,1....).
    je contrôle ces champs en php avec is_numeric ( valeurs venant d'un champ texte) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ........................
    if ((empty($_POST['m'])) or (!is_numeric($_POST['m'])))
    	{
    	$erreurs_msg['m'] = 'Veuillez saisir un nombre dans la case M:00-01 SVP.';
    }
    si je saisie : 0 j'ai le message d'erreur, normalement sa passe.
    si je saisie: 00 sa passe c'est bon résultat dans la bdd champ=0.
    si je saisie: 1,2 sa passe pas.
    si je saisie: 1.2 sa passe résultat dans la bdd champ=1 le (.2) est ignoré.
    si je saisie: -2 sa passe résultat dans la bdd champ=0 .
    is_int() sa ne marche pas !!!

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    le 1,2 c'est normale, ensuite ça depend surtout ce que tu fait au moment ta requête et de ton type champs

  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 : 54
    Localisation : Algérie

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

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Re , type de champ est mediumint.
    dans la requête d'insertion je ne fait aucun contrôle ni conversion.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    .........
    $insertdata->bindParam(':m',	$_POST['m'],  PDO::PARAM_INT); // entier
    ............
    je veux inséré que les les chiffres supérieurs a zéro.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    fait un filter_var

    ps : juste 'm' pas besoin de faire ':m'

  5. #5
    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
    Par défaut
    Salut

    Le comportement que tu as est normal, c'est propre à la fonction_is_numeric().
    Consulte la doc : is_numeric()

    Il faut savoir que tous les paramètres récupérées dans $_GET ou $_POST sont considérés comme des chaines, et c'est pour cela qu'il existe cette fonction is_numeric().
    Une chaine comme "33" sera considéré comme un nombre (33).

    Après, ça dépend qu'est-ce que tu veut en faire.
    Faire des vérifications/filtres est souvent indispensable afin d'éviter d'enregistrer n'importe quoi dans la Bdd.
    Tout ceci peu donner lieu à de gros paquets de codes.

    Pour le 2,2, ça dépend des configurations de php, des locales, fonction setlocale().
    On peu par exemple définir la virgule comme séparateur décimale, mais personnellement je m'y suis jamais risqué.
    Le point est plus universel à mon sens.

    De ton coté tu peux toujours remplacer le virgule par un point pour accepter le nombre pour qu'après insérer un nombre décimal (pour exemple).

    je veux inséré que les les chiffres supérieurs a zéro.
    Alors au niveau de la verif on peut faire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (isset($_POST['m']) && (int)$_POST['m'] > 0) {
        $entier = (int)$_POST['m'];
    }
    En somme, on caste la données, et ici elle sera obligatoirement >= à 1

  6. #6
    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 : 54
    Localisation : Algérie

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

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Re, merci RunCodePhp.

    pour ta proposition sa marche mais les chiffres décimaux passent , je dois accepté que les entiers naturels exemple (12,21,3,0......) pas des 12.3 ou 45.66....
    code vérification:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if (isset($_POST['validform'])) // si le formulaire est validé
    {
    ....
    if ((empty($_POST['m'])) or (int)$_POST['m'] <0) //
    {
    $erreurs_msg['m'] = 'Veuillez saisir un nombre dans la case M:00-01 SVP.';
    } 
    ....
    }

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

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, 01h28
  2. Modifier un champ numerique en num auto
    Par Azerty2 dans le forum Access
    Réponses: 16
    Dernier message: 18/07/2006, 23h35
  3. Champ numerique dans table liée
    Par ob1knob dans le forum Access
    Réponses: 1
    Dernier message: 06/07/2006, 17h53
  4. probleme avec des champs numeriques
    Par el_quincho dans le forum Access
    Réponses: 1
    Dernier message: 16/03/2006, 12h55
  5. Increment d'un champ numerique
    Par oazar dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/04/2004, 00h28

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