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

PHP & Base de données Discussion :

controle numérique de longueur de chaine en php


Sujet :

PHP & Base de données

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 3
    Points : 1
    Points
    1
    Par défaut controle numérique de longueur de chaine en php
    bonjour,

    j'ai un petit probleme, j'utilise des formulaires afin d'insérer des données dans un base en mysql

    je voudrais controler ce que l'utilisateur saisit afin de ne pas ecrire n'importe quoi dans ma base, je veux donc saisir une année en 4 chiffres et donc controler si :
    1) c'est des chiffres
    2) si ca fait bien 4 caractères!

    si j'ai la solution pour le 1er pb je pourrai contourner le 2ème en indiquant une année minimale et une maximale

    merci d'avance pour votre aide

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    tu as is_numeric qui te dis si ce que tu recois est un float ou un int. (tu ne peux utiliser is_int)
    ensuite tu peux caster en int et tester si c'est dans la plage
    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
     
    if (isset($_REQUEST['annee'])) {
       //année fournie
       $annee = $_REQUEST['annee'];
       if (is_numeric($annee)) {
          //c'est numeric
          $annee = (int)$annee;
          if (1970 < $annee && $annee < 2050) {
             //C'est dans la fourchette
          } else {
             //pas bon !
          }
       } else {
          //c'est pas numerique
       }
    } else {
       //année pas fournie
    }

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2005
    Messages : 161
    Points : 193
    Points
    193
    Par défaut
    Bonjour ^^

    Une petite solution pour le pb 2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    // Je suppose que tu envoies les données avec methode POST dans ton formulaire
     
    $annee = $_POST['NomDuChampDate'];
    if (strlen($annee) == 4)
    {
          // 4 caracteres, donc tu place ici le code
    }
    else
    {
          // On arrive ici si la longueur de $date est differente de 4
    }
    ?>
    Le Temps ke je poste, on t'a filé une solution pour verifier le type ^^

    edit: Pour vérifier si c bien un entier, tu peux utiliser une expression reguliere.
    L'avantage, c'est que cela te dira si la longueur est bonne en meme temps
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if (ereg ("[0-9]{4}", $annee))
    {
          echo "Anne valide";
    }
    else
    {
          echo "Annee invalide";
    }
    ?>

  4. #4
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    pour ca le mieux je pense est d'utiliser une expression réguliere :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $result = ereg( "^[0-9]{4}$" , $value , $regs ) ;
    par contre j'ai un doute pour le {4}
    mais si ce n'est pas un nombre ereg te retournera false;

  5. #5
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    les regexp sont un peu lourdes pour ce genre de traitement non ?
    Et puis si je mets 0000 c'est pas une année ça Enfin si mais bon je doute que ca rentre dans le cadre de l'appli

  6. #6
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    alors sur ce coup la je ne sais pas du tout pour savoir il faudrait tester les 2 méthodes. Sinon c'est vrai que la tienne est pas mal pour vérifier la validité.

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2005
    Messages : 161
    Points : 193
    Points
    193
    Par défaut
    Citation Envoyé par MadCat34
    Bonjour ^^

    Une petite solution pour le pb 2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    // Je suppose que tu envoies les données avec methode POST dans ton formulaire
     
    $annee = $_POST['NomDuChampDate'];
    if (strlen($annee) == 4)
    {
          // 4 caracteres, donc tu place ici le code
    }
    else
    {
          // On arrive ici si la longueur de $date est differente de 4
    }
    ?>
    Le Temps ke je poste, on t'a filé une solution pour verifier le type ^^

    edit: Pour vérifier si c bien un entier, tu peux utiliser une expression reguliere.
    L'avantage, c'est que cela te dira si la longueur est bonne en meme temps
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if (ereg ("^[0-9]{4}$", $annee))
    {
          echo "Anne valide";
    }
    else
    {
          echo "Annee invalide";
    }
    ?>
    Oops, j'avais fait une petite erreur ^^
    C'est corrigé.
    Bebel: T'as raison, pour le {4}

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    MErci je pense que je pourrais m'en sortie avec strlen() et is_int()

    je testerai quand j'aurai mon code avec moi et en cas de probleme je vous relance

  9. #9
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Citation Envoyé par melli
    MErci je pense que je pourrais m'en sortie avec strlen() et is_int()

    je testerai quand j'aurai mon code avec moi et en cas de probleme je vous relance

    Je parle dans le vent ???
    Tu ne peux pas utiliser is_int !!!!

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Tu ne peux pas utiliser is_int !!!!

    désolé j'avais mal lu
    j'utiliserai is_numeric alors

  11. #11
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2005
    Messages : 161
    Points : 193
    Points
    193
    Par défaut
    Il faut lui expliquer pourquoi il ne peux pas utiliser is_int ^^
    C'est bien de lui avoir dit, mais il doit comprendre pourquoi

    is_int($var) indique si une variable est de type nombre entier

    Par contre, pour tester si une variable est un nombre ou une chaîne numérique (comme les données saisies dans un formulaire, qui sont toujours des chaînes), il te faut utiliser la fonction is_numeric().

  12. #12
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    vi
    il(elle) n'a pas demandé aussi

Discussions similaires

  1. Controle de la longueur d'un champ numérique
    Par Papapetch dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/07/2009, 12h51
  2. [RegEx] Expression régulière et longueur de chaine
    Par cbroissa dans le forum Langage
    Réponses: 30
    Dernier message: 23/05/2006, 19h33
  3. [Debutant] Longueur de chaine
    Par georgeabitbol dans le forum Oracle
    Réponses: 2
    Dernier message: 20/03/2006, 16h42
  4. Liste modifiable : longueur de chaine.
    Par pifou02 dans le forum Access
    Réponses: 8
    Dernier message: 09/01/2006, 15h47
  5. BDE, la longueur de chaine ne peut dépasser 256 BYTES
    Par valoji dans le forum Bases de données
    Réponses: 1
    Dernier message: 17/10/2005, 08h57

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