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

JavaScript Discussion :

Mise en place de test javascript sur NIR (Numero de sécu)


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Mise en place de test javascript sur NIR (Numero de sécu)
    Bonjour à tous,

    Sur un formulaire web (php), je souhaite mettre en place des contrôles sur un champ "numéro de sécu (NIR)" afin d'afficher une alerte (javascript) lorsque l'adhérent saisie une information qui ne correspond à l'information entré dans le champ NIR.

    Je m'explique, sur mon formulaire : le premier champ est le champ "numéro de sécurité sociale", celui ci est composée de 13 chiffres + 2 pour la clé. Ensuite viennent le nom, prénom, et date de naissance. Des contrôles sont déjà en place sur le numéro de sécu, mais j'aimerai en ajouter d'autre, notamment avec les informations saisies par l'internaute dans le champ date de naissance.

    Exemple : 1.82.09....

    Dans un premier temps, je souhaite mettre un test sur le premier chiffre (1) saisie dans le numéro de sécu saisie, celui-ci doit être soit 1 pour un homme soit 2 pour une femme.

    pour les deux chiffres suivants (82), ils correspondent à l'année de naissance, j'aimerai qu"ils correspondent aux deux derniers chiffres de l'année de naissance entré dans le champ "Date de naissance"

    pour les deux chiffres suivants (09), ils correspondent au mois de naissance, pareil, j'aimerai qu"ils correspondent aux deux chiffres du mois de naissance entré dans le champ "Date de naissance".

    Merci pour votre aide,

    Cordialement,

    Ci-dessous, le code PHP :

    Code php : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    <?php
    echo"<hr>\n";
    echo"<table width='95%' border='0' align='center' cellpadding='0' cellspacing='0'>\n";
    echo"<tr bgcolor='#B1D1F8' class='arial11'>\n";
    echo"<td colspan='2'><strong>Etat civil du salarié :</strong></td>\n";
    echo"</tr>\n";
     
    //mat SS
    echo"<tr>\n";
    echo"<td width='40%' class='arial11'>Num&eacute;ro de s&eacute;curit&eacute; sociale :</td>\n";
    echo"<td><input name='num_secu' type='text' class='zoneTexte11' id='num_secu' size='20' maxlength='13' value=''>\n";
    echo"<input name='cle' type='text' class='zoneTexte11' id='cle' size='3' maxlength='2' value=''></td>\n";
    echo"</tr>\n";
     
    //nom
    echo"<tr>\n";
    echo"<td class='arial11'>Nom :</td>\n";
    echo"<td><input name='nom' type='text' class='zoneTexte11' id='nom' size='30' maxlength='30' onchange='javascript:this.value=this.value.toUpperCase();' onkeyup='verif(this);'
    ></td>\n";
    echo"</tr>\n";
     
    //prenom
    echo"<tr>\n";
    echo"<td class='arial11'>Pr&eacute;nom :</td>\n";
    echo"<td><input name='prenom' type='text' class='zoneTexte11' id='prenom' size='30' maxlength='30' onchange='javascript:this.value=this.value.toUpperCase();' onkeyup='verif(this);'
    ></td>\n";
    echo"</tr>\n";
     
    //date de naissance
    echo"<tr>\n";
    echo"<td class='arial11'>Date de naissance :</td>\n";
    echo"<td>\n";
    echo"<select name='jour' id='jour' class='arial11'>\n";
    echo"<option value=''></option>\n";
    for($i=1;$i<=31;$i++)
    {
    	$jour = $i<10 ? "0".$i : $i;
    	echo"<option value='$jour'>$jour</option>\n";
    }
    echo"</select>\n";
     
    echo"<select name='mois' id='mois' class='arial11'>\n";
    echo"<option value=''></option>\n";
    for($i=1;$i<=12;$i++)
    {
    	$mois = $i<10 ? "0".$i : $i;
    	echo"<option value='$mois'>$mois</option>\n";
    }
    echo"</select>\n";
     
    echo"<select name='annee' id='annee' class='arial11'>\n";
    echo"<option value=''></option>\n";
    for($i=date("Y");$i>=date("Y")-70;$i--)
    {
    	echo"<option value='$i'>$i</option>\n";
    }
    echo"</select>\n";
     
    echo"</td>\n";
    echo"</tr>\n";

    Ci-dessous, le JAVASCRIPT:
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    if(ss=="")
        {
            alert("Veuillez saisir le numéro de sécurité sociale..");
            disableSubmit("valid_add_sal",false);
            return false;
        }
        else if(ss.length<13)
        {
            alert("Un numéro de sécurité sociale est composé de 13 caractères...");
            disableSubmit("valid_add_sal",false);
            return false;
        }
        else if(ss_key=="")
        {
            alert("Veuillez saisir la clé du numéro de sécurité sociale...");
            disableSubmit("valid_add_sal",false);
            return false;
        }
        else if(ss_key.length<2)
        {
            alert("La clé du numéro de sécurité sociale est composé de 2 caractères...");
            disableSubmit("valid_add_sal",false);
            return false;
        }
        else if(ss_2=="000000000000")
    	{
    	   alert("Numéro de sécurité sociale invalide...");
    	   disableSubmit("valid_add_sal",false);
           return false;
    	}
    	else if(ss_2=="999999999999")
    	{
    	   alert("Numéro de sécurité sociale invalide...");
    	   disableSubmit("valid_add_sal",false);
           return false;
    	}
        else if(!checkMatSS(ss,ss_key,true))
        {
            alert("Numéro de sécurité sociale ou clé invalide...");
            disableSubmit("valid_add_sal",false);
            return false;
        }
    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Tu peux aussi ajouter le contrôle de validité de la clé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       var Num = document.Form1.ss.value;
       ss_key = 97 - Num % 97;

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    une petite expression régulière ?

    là c'est en php mais facilement adaptable en js
    http://www.developpez.net/forums/d67...urite-sociale/
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Attention, le premier chiffre peut aussi être 3 !
    Sinon, je pense que tu devrais mieux expliquer ce que tu veux faire, ce qui te pose problème et ce que tu as déjà tenté histoire qu'on comprenne mieux ce que tu demandes.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    selon le post dans le forum php
    je ne savais pas qu'il y avait autant de variété !
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Bonjour

    euh ... Attention : on peut très bien être rattaché au numéro de sécu de son père ou de sa mère, ou autre ...

    En plus il peut y avoir aussi des infos non cohérentes dans le numéro de sécu, comme des mois lunaires ... ainsi un numéro commençant par 15252... peut être valable (j'en ai dans mes clients )

    tout ça pour dire que les contrôles que tu veux rajouter ne sont peut-être pas à bon escient .

    Tu peux aussi ajouter le contrôle de validité de la clé.
    C'est le minimum décent ...
    Les numéros qui commencent pas 7 et 8 sont des numéros provisoires


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
    (J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

    Chuck Norris comprend JC Van Damme.

  7. #7
    Membre actif

    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 183
    Points : 274
    Points
    274
    Par défaut
    Comme mes camarades, je t'invite à revoir tout de suite ton algo de validation, car regarde bien ce que dit wikipedia concernant les numéros de la carte de sécu :
    http://fr.wikipedia.org/wiki/Num%C3%...iale_en_France

  8. #8
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci pour ces informations,

    Pour expliquer un peu plus l'objet de ma demande : Le formulaire web est utilisé par des entreprises, celui-ci leur permet d'enregistrer des informations salariés. Les informations saisies sont ensuite reprises dans un progiciel, puis un collaborateur intégrera ou non le salarié. Pour cela, j'ai besoin de mettre un premier contrôle de cohérence, qui permette de vérifier la bonne saisie. Exemple : si une entreprise entre pour son salarié une date de naissance du genre 12/01/1980, le numéro de secu doit commencer par 1(ou 2)8001... Si ça n'est pas le cas, je souhaiterai qu'un javascript puisse dire que la date de naissance ne correspond pas au numéro de secu saisie.

    Concernant les diverses particularités du numéro de sécu. En effet, celui-ci peut également commencer par 3,7 ou 8, mais notre système n'intégrera pas les numéros de sécu commençant par ces chiffres, il est donc important pour moi de limiter la saisie du premier caractère uniquement à 1 ou 2.

    Pareil pour les numéro de sécu rattaché aux parents, ceux là ne sont également pas accepté par le système, le salarié doit posséder son propre numéro de secu...

    Une fonction me permet également de vérifier le numéro de sécu :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    function checkMatSS(mat,cle,with_letters)
    {
        if(with_letters==true && cle==99)
        {
            return true;
        }
        else
        {
            if(mat=="")
            {
                return false;
            }
            else if(mat.length!=13)
            {
                return false;
            }
            else if(cle=="")
            {
                return false;
            }
            else
            {
                var dividende;
                var diviseur=97;
                var lettre=mat.substring(6,7);
                lettre=lettre.toUpperCase();
     
                //conversion pour les département corse
                switch(lettre)
                {
                    case ("A"):
                        var reg_exp=new RegExp("[Aa]","g");
                        dividende=mat.replace(reg_exp,"0");
                        dividende=dividende-1000000;
                    break;
                    case ("B"):
                        var reg_exp=new RegExp("[Bb]","g");
                        dividende=mat.replace(reg_exp,"0");
                        dividende=dividende-2000000;
                    break;
                    default:
                        dividende=mat;
                    break;
                }
                //calcul du quotient
                var quotient=Math.floor(dividende/diviseur);
     
                //calcul du reste
                var reste=dividende-(quotient*diviseur);
     
                //clé de numero de secu = diviseur - reste
                var key=diviseur-reste;
     
                if(key!=cle)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
        }
    }

  9. #9
    Membre actif

    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 183
    Points : 274
    Points
    274
    Par défaut
    Citation Envoyé par nemils59 Voir le message
    Merci pour ces informations,
    [...]

    Pareil pour les numéro de sécu rattaché aux parents, ceux là ne sont également pas accepté par le système, le salarié doit posséder son propre numéro de secu...
    Comment tu fais si c'est un salarié que vous venez juste d'embaucher et qui était encore chez ses parents ?
    Ce que tu dis n'as pas vraiment de sens et dans ce cas, jetez votre progiciel à la poubelle.

  10. #10
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par arnogues Voir le message
    Comment tu fais si c'est un salarié que vous venez juste d'embaucher et qui était encore chez ses parents ?
    Ce que tu dis n'as pas vraiment de sens.
    Si le salarié qui vient d'être embauché n'a pas son propre numéro de sécu, le processus est différent, il n'utilisera pas ce formulaire, c'est tout, il sera intégré différemment.

    Donc ce que je dis, OUI, a du sens.
    Avec ces précisions, as-tu quelque chose d’intéressant et constructif à me proposer "arnogues"? Parce qu'avec des commentaires de ce type :
    jetez votre progiciel à la poubelle.
    tu ne fais pas avancer le "schmilblick"...

Discussions similaires

  1. [DEBUTANT] Mise en place d'un site sur IIS
    Par Kalion dans le forum ASP.NET
    Réponses: 1
    Dernier message: 03/12/2008, 11h04
  2. [samba/ldap]Mise en place d'une corbeille sur un NAS!
    Par flavio_dev dans le forum Linux
    Réponses: 1
    Dernier message: 11/08/2008, 14h25
  3. [FLASH 8][AS2][OFFLINE]Mise en place d'un Listener sur un combobox
    Par -=OAZ=- dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 27/03/2008, 10h18
  4. Réponses: 1
    Dernier message: 16/01/2008, 23h05
  5. [Test][VS2005] Mise en place des tests unitaires
    Par Dadou74 dans le forum Test
    Réponses: 1
    Dernier message: 31/08/2006, 17h45

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