Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    1,171

    recupero data nascita dal codice fiscale

    come posso recuperare dal codice fiscale la data di nascita?
    esiste uno script?

  2. #2
    Certo,si puo fare.

    Ecco lo script.


    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <
    html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
        <
    head>    
            <
    meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>    
            <
    title>Menu Tester</title>        
            <
    style type="text/css">    
                .
    tabella
                
    {
                    
    width:600px;
                    
    margin:0px;
                    
    padding:0px;
                    
    border-collapse:collapse;
                }
                .
    tabella td
                
    {
                    
    margin:0px;
                    
    padding:10px;
                    
    border:2px solid red;
                }
            </
    style>    
            <
    script>
                function 
    calcola()
                {
                    
    mesi="ABCDEHLMPRST";
                    
    nomi_mesi=new Array(
                    
    "Gennaio","Febbraio","Marzo","Aprile",
                    
    "Maggio","Giugno","Luglio","Agosto",
                    
    "Settembre","Ottobre","Novembre","Dicembre");
                    
    codice=document.getElementById("codice");
                    
    giorno=document.getElementById("giorno");
                    
    mese=document.getElementById("mese");
                    
    anno=document.getElementById("anno");
                    
    giorno.value=codice.value.substring(9,11);
                    
    str_mese=codice.value.substring(8,9).toUpperCase();
                    
    num_mese=mesi.indexOf(str_mese);
                    
    mese.value=nomi_mesi[num_mese];
                    
    anno.value=codice.value.substring(6,8);
                }
            
    </script>
        </head>
        <body>
            <table class="tabella">
                <tr>
                    <td>
                        Inserisci codice fiscale
                    </td>
                    <td> 
                        <input id="codice" name="codice" type="text" size="50" />
                    </td>
                </tr>
                <tr>
                    <td>
                        GIORNO
                    </td>
                    <td>
                        <input type="text" readonly id="giorno" name="giorno" />
                    </td>
                </tr>
                <tr>
                    <td>
                        MESE
                    </td>
                    <td>
                        <input type="text" readonly id="mese" name="mese" />
                    </td>
                </tr>
                <tr>
                    <td>
                        ANNO
                    </td>
                    <td>
                        <input type="text" readonly id="anno" name="anno" />
                    </td>
                </tr>
                <tr>
                    <td>
                    </td>
                    <td>
                        <input type="button" value="invia" onclick="calcola()"/>
                    </td>
                </tr>
            </table>
        </body>
    </html> 

  3. #3
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Originariamente inviato da marco.carrieri
    Certo,si puo fare.

    Ecco lo script.

    ...
    solo dovresti tener conto che le donne hanno un giorno di nascita superiore a 31

    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    prova questa, però considera che dal solo cdice fiscale non hai modo di distinguere una persona nata nel 1908 o nel 2008

    se dai per assunto che non devi calcolare date di ultracentenari puoi usare questa che ho buttato giù in poco tempo

    codice:
    <script type="text/javascript">
        
        var codicefiscale = 'TRVLSA74D56C709X';
        var tabellamesi = {
            "A" : "01",
            "B" : "02",
            "C" : "03",
            "D" : "04",
            "E" : "05",
            "H" : "06",
            "L" : "07",
            "M" : "08",
            "P" : "09",
            "R" : "10",
            "S" : "11",
            "T" : "12"
        };
    
        var datanascita = codicefiscale.replace(/^(?:\w{6})(\d{2})(\w)(\d{2}).+$/, function(data, aa, mm, gg) {
    
            var anno = parseInt(aa, 10);
            var secolo = (anno < 9)? '20':'19';
            anno = [secolo, aa].join('');
    
            var giorno = parseInt(gg, 10);
            if (giorno > 71 || ((31 < giorno) && (giorno < 41))) return 'giorno di nascita errato.';
    
            var sesso = (giorno > 31)? 'F' : 'M';
            if (sesso === 'F') giorno -= 40;
            
            var mese = mm.toUpperCase();
            if (!tabellamesi[mese]) return 'mese di nascita errato';
            mese = tabellamesi[mese]; 
    
            return [sesso, giorno, mese, anno];
        });
    
        alert(datanascita);
    
    </script>
    restituisce un array con sesso, giorno, mese e anno
    i controlli sulla validità della data vanno ovviamente raffinati per verificare se esistono certe date (es. anni bisestili o mesi di 31 giorni)

    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    1,171
    e come richiamo la funzione dal codice fiscale?

    in pratica ho una text per inserire il valore del codice fiscale che si chiama CF
    mentre il campo data di nascita di chiama NATO

  6. #6
    Che figura che ho fatto fcaldera. Hai ragione :,( hehe volevo solo dare una mano . Ci sono andato quasi vicino :P .

  7. #7
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Originariamente inviato da tigre2209
    e come richiamo la funzione dal codice fiscale?

    in pratica ho una text per inserire il valore del codice fiscale che si chiama CF
    mentre il campo data di nascita di chiama NATO
    trasformarla in un funzione è questione di un attimo

    codice:
    <script type="text/javascript">
    
        function getDataByCF(cf) {
    
            var tabellamesi = {
                "A" : "01",
                "B" : "02",
                "C" : "03",
                "D" : "04",
                "E" : "05",
                "H" : "06",
                "L" : "07",
                "M" : "08",
                "P" : "09",
                "R" : "10",
                "S" : "11",
                "T" : "12"
            };
    
            return cf.replace(/^(?:\w{6})(\d{2})(\w)(\d{2}).+$/, function(data, aa, mm, gg) {
    
                var anno = parseInt(aa, 10);
                var secolo = (anno < 9)? '20':'19';
                anno = [secolo, aa].join('');
    
                var giorno = parseInt(gg, 10);
                var sesso = (giorno > 31)? 'F' : 'M';
                if (sesso === 'F') giorno -= 40;
    
                var mese = mm.toUpperCase();
                mese = tabellamesi[mese];
    
                return [giorno, mese, anno].join("/");
            });
    
    
        };
    </script>
    
    
    <form>
    
        CF <input type="text" name="cf"
            onblur="document.getElementById('nato').value = getDataByCF(this.value);"
            onkeyup="this.value = this.value.toUpperCase();" />
    
        Nato <input type="text" name="nato" id="nato"/>
    </form>
    scrivi il codice fiscale sul primo campo e all'onblur ti verrò scritta la data di nascita
    Ma, ripeto, devi fare dei controlli a monte sulla validità del codice fiscale

    codice:
            onblur="if validaCF(this.value) document.getElementById('nato').value = getDataByCF(this.value);" ...
    dove validaCF() è una funzione che fa tutti i controlli del caso
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  8. #8
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Originariamente inviato da fcaldera
    dove validaCF() è una funzione che fa tutti i controlli del caso

    potrebbe essere questa funzione

    codice:
        function isValidCF(codicefiscale) {
            var cf;
            var reCF = /^[a-z]{6}(\d{2})(A|B|C|D|E|H|L|M|P|R|S|T)([1256]\d|[04][1-9]|[37][01])[a-z]\d{3}[a-z]$/i;
    
            if (!(cf = codicefiscale.toUpperCase().match(reCF))) return false;
            else {
    
                var isLeapYear = function(year) {
                    /* is a leap year ? */
                    var year = parseInt(year, 10);
                    return (!(year % 100))? (!(year % 400)) : (!(year % 4));
                };
    
                /* controllo tutti i mesi 31 giorni */
                if (/(31|71)/.test(cf[3]) && !(/[ACELMRT]/).test(cf[2])) return false;
    
                /* controllo febbraio non superiore 29 giorni */
                if (/([37][01])/.test(cf[3]) && cf[2] === 'B') return false;
    
                /* controllo anni bisestili */
                cf[1] = parseInt(cf[1], 10);
                cf[1] = [(((new Date).getFullYear() % 100) < cf[1])? '19':'20', cf[1]].join('');
                if (/([26]9)/.test(cf[3]) && cf[2] === 'B' && !isLeapYear(cf[1])) return false;
            };
    
            return true;
        }
    
        alert('TTRBDT81B69C067F : ' + isValidCF('TTRBDT81B69C067F'));
        alert('TTRBDT56H24C067F : ' + isValidCF('TTRBDT56H24C067F'));
    questo credo sia il massimo controllo che si può fare ragionevolmente lato client
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.