[PHP] Verification d'un champs

laetitia -  
mpmp93 Messages postés 2931 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
J'ai un formulaire que je traite en PHP et je fais des vérifications sur les données entrées par l'internaute avant l'insertion en base de donnée.
J'arrive a faire toutes mes verifications sauf 2 :(
- un des champs ne doit contenir que des chiffres (soit 9 chiffres soit 14 chiffres);
-un des champs doit comporter 4 caractéres composés de cette facon : 3 chiffres + 1 lettre;

je sais verifier la longueur des ces champs
1/
$nb_caractere_champs1=strlen($champs1);
2/
$nb_caractere_champs2=strlen($champs2);

Donc pour le 1/ une fois que j'ai verifié que la longueur est bien de 9 ou 14 comment je fais a verifier que c'est que des chiffres ?
Et pour le 2/ que les 3 premiers sont des lettres (de a à z) et le 4 eme un chiffre (0-9) ??

Je dois faire cette vérification obligatoirement en PHP, sans utiliser de fonction javascript.

Si quelqu'un sait comment faire, ou pourrait m'orienter vers une fonction genre str.... cela m'aiderait énormement !

Merci à vous tous.

Laetitia
Configuration: Windows Vista
Opera 9.24

3 réponses

  1. naruto-94 Messages postés 904 Statut Membre 188
     
    Bonsoir ( ou bonjour ) ,

    Pour ton probleme tu devrais utiliser les expressions régulieres .

    par exemple pour ton cas :

    if (preg_match("#[0-9]#", $champs1 )) //si le $champs1 contient que des chiffres
    {
    echo 'Il y a bien que des chiffres dans le champ 1'; //c'est vrai
    }
    else
    {
    echo 'Le champ 1 contient un ou des caractere(s) interdit' ; //sinon c'est faux
    }

    Pour plus d'info :

    https://openclassrooms.com/fr/courses
    https://openclassrooms.com/fr/courses
    3
    1. misterpoom
       
      Bonjour, petite intervention pour dire que: if (preg_match("#[0-9]#", $champs1 )), n'interdit absolument les lettres si elles sont accompagnées de chiffres.
      0
    2. Luxerails Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   41
       
      Oui, la regex #[0-9]# ne sufit pas. Il faudra utiliser la regex #^[0-9]$#.
      0
  2. Luxerails Messages postés 160 Date d'inscription   Statut Membre Dernière intervention   41
     
    Pour le 1/ :
    if (preg_match('#^[0-9]$#', $nombre_a_verifier))
    {
         echo 'c\'est bon';
    }


    Pour le 2/
    if (preg_match('#^[a-z]{3}[0-9]$#', $nombre_a_verifier2))
    {
         echo 'c\'est bon';
    }
    0
  3. mpmp93 Messages postés 2931 Date d'inscription   Statut Membre Dernière intervention   1 343
     
    Bonjour,

    Concernant: un des champs ne doit contenir que des chiffres (soit 9 chiffres soit 14 chiffres);

    C'est un numéro SIRET/SIREN

    1) faire test de cohérence avec algorithme dit "clé de Luhn"

    Solution ici:
    https://codes-sources.commentcamarche.net/

    A+
    0