Avatar billede xvid Seniormester
28. august 2006 - 16:07 Der er 17 kommentarer og
1 løsning

Udregne CPR muligheder

Hej jeg har fundet et script her på sidden der udregner cpr-nr og det virker fint, man jeg vil høre om det er muligt at tilføje noget i stil med det her:

f.eks.
1. hvis man skriver 1802702285 så få man at vide om man er mand eller kvinde eller ingen af delne og det virker fint

2. det som jeg vil hør er om det er muligt at kun skrive fødselsdag 180270 og få en oversigt over mulige cpr-nr for det fødselsdag dato:

skriver man 180270 så kommer der til at stå nedenunder

180270-2255 kvinde
180270-3344 kvinde
180270-4499 mand
180270-5577 mand

osv.......


håber at I forstå ellers så spørger I bare ;-)

på forhånd tak

xvid


ps scriptet har jeg fundet her: http://www.eksperten.dk/spm/525391

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Valider CPR nr</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/javascript">
function cprCheck(flt){
  var cpr = flt.value,match = false,c = document.getElementById('cprcheck');
  if(cpr.match(/[0-9]{6}\-?[0-9]{4}/)){
    cpr = cpr.replace(/\-/g,"");
    var chk = 0;
    for(i=9;i>-1;i--){
      chk += (+cpr.charAt(i))*((i>2)?(10-i):(4-i));
    }
    if(chk%11==0)match = true;
    var dag = new Date(+cpr.substring(4,2),+cpr.substring(2,2),+cpr.substring(0,2));
    if(dag.getTime() > new Date().getTime() || !match){
      c.style.color = "red";
      c.innerHTML = "Ugyldigt Cpr nr.";
    }else{
      c.style.color = "green";
      c.innerHTML = "Gyldigt Cpr nr. (Køn: " + ((cpr.match(/[13579]$/))?"Mand":"Kvinde") + ")";
    }
  }else{
    c.style.color = "#aaa";
    c.innerHTML = (cpr.length>0)?"Validerer ...":"&lt;-- Indtast CPR nr.";
  }
}
</script>
</head>
<body>
<form name="form1" method="post" onSubmit="">
  <input type="text" name="cpr" onkeyup="cprCheck(this)">&nbsp;<span id="cprcheck" style="color:#aaa;">&lt;-- Indtast CPR nr.</span><br>
  <input type="submit" name="Submit" value="Submit">
</form>
</body>
</html>
Avatar billede xvid Seniormester
28. august 2006 - 20:56 #1
det var bare en idé jeg fik for at se om det var muligt ;-)
Avatar billede nielle Nybegynder
29. august 2006 - 14:25 #2
Prøv at skrive de første 6 cifre i feltet, og vent så et par sekunder:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Valider CPR nr</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/javascript">
function modulus11Check(cpr)
{
    var chk = 0;
    for (var i=9; i>-1; i--)
    {
        chk += (+cpr.charAt(i)) * ((i>2) ? 10-i : 4-i);
    }
    return (chk%11 == 0);
}

function listAll(datePart)
{
    var c = document.getElementById('cprlist'); list = "";

    for (var i=0; i<=9999; i++)
    {
        var temp = "" + i;
        while (temp.length < 4) temp = "0" + temp;
        var cpr = datePart + temp;
       
        if (modulus11Check(cpr))
            list += cpr + "<br>";
    }

    c.innerHTML = list;
}

function cprCheck(flt)
{
    var cpr = flt.value, c = document.getElementById('cprcheck');
    if (cpr.match(/^\d{6}-?\d{4}$/))
    {
        cpr = cpr.replace(/-/g, "");
        var match = modulus11Check(cpr);
        var dag = new Date(+cpr.substring(4,2), +cpr.substring(2,2), +cpr.substring(0,2));
        if (dag.getTime() > new Date().getTime() || !match)
        {
            c.style.color = "red";
            c.innerHTML = "Ugyldigt Cpr nr.";
        }
        else
        {
            c.style.color = "green";
            c.innerHTML = "Gyldigt Cpr nr. (Køn: " + ((cpr.match(/[13579]$/)) ? "Mand" : "Kvinde") + ")";
        }
    }
    else
    {
        if (cpr.match(/^\d{6}$/)) listAll(cpr);
        c.style.color = "#aaa";
        c.innerHTML = (cpr.length>0) ? "Validerer ..." : "&lt;-- Indtast CPR nr.";
    }
}
</script>
</head>
<body>
<form name="form1" method="post" onSubmit="">
    <input type="text" name="cpr" onkeyup="cprCheck(this)">&nbsp;<span id="cprcheck" style="color:#aaa;">&lt;-- Indtast CPR nr.</span><br>
    <input type="submit" name="Submit" value="Submit">
</form>

<div id="cprlist">
</div>

</body>
</html>
Avatar billede nielle Nybegynder
29. august 2006 - 14:26 #3
Inden at man bliver alt for glad for at validere CPR-numre, bør man dog vide at modulus-11 tjekket forsvinder et af de kommende år:

http://www.cpr.dk/Index/dokumenter.asp?o=2&n=0&h=2&d=647&s=4
Avatar billede olebole Juniormester
29. august 2006 - 14:42 #4
<ole>

Hvis det skal bruges til noget, hvor CPR-nummeret er kritisk, skal det jo også valideres på serveren (klient-validering er jo kun til for brugerens skyld). I så fald er der flere løsninger i PHP-kategorien ... prøv f.eks:
    http://www.eksperten.dk/spm/Programmering/Script/PHP/?sort=&order=DESC&status_1=on&status_2=on&status_3=on&spm_creator=&spm_part=&spm_answer=&find=cpr&engine=exp

/mvh
</bole>
Avatar billede xvid Seniormester
29. august 2006 - 16:04 #5
nielle det ser godt ud man er det muligt at tilføje så scriptet også skriver om det et en mand eller en kvinde?
hvad mener du med at modulus-11 tjekket forsvinder kort fortalt?
Avatar billede nielle Nybegynder
29. august 2006 - 16:09 #6
> hvad mener du med at modulus-11 tjekket forsvinder kort fortalt?

Det følger af linket til CPR-registeret, men kort fortalt er vi ved at løbe tør for 4-bogstavs endelser for visse datoer.
Avatar billede nielle Nybegynder
29. august 2006 - 16:11 #7
function listAll(datePart)
{
    var c = document.getElementById('cprlist'); list = "";

    for (var i=0; i<=9999; i++)
    {
        var temp = "" + i;
        while (temp.length < 4) temp = "0" + temp;
        var cpr = datePart + temp;
       
        if (modulus11Check(cpr))
            list += cpr + ((i%2 == 0) ? " kvinde" : " mand") + "<br>";
    }

    c.innerHTML = list;
}
Avatar billede xvid Seniormester
29. august 2006 - 16:20 #8
hvor sætter jeg det hen, og er det muligt at gør sådan at hvis man skriver :

180270 så får man en oversigt over alle mulige..........  det virker

så skriver man 1802700 så får man kun dem der starter med 0xxx

så skriver man 18027001 så får man kun dem der starter med 01xx

så skriver man 180270012 så får man kun dem der starter med 012x

håber at du forstå
Avatar billede xvid Seniormester
29. august 2006 - 16:24 #9
og hvordan skrifter jeg skrifttype?
Avatar billede nielle Nybegynder
29. august 2006 - 17:06 #10
29/08-2006 16:20:58>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Valider CPR nr</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/javascript">
function modulus11Check(cpr)
{
    var chk = 0;
    for (var i=9; i>-1; i--)
    {
        chk += (+cpr.charAt(i)) * ((i>2) ? 10-i : 4-i);
    }
    return (chk%11 == 0);
}

function listAll(datePart)
{
    var c = document.getElementById('cprlist'); list = "";
    var maxI, padLeft;
    switch (datePart.length)
    {
        case 6 : maxI = 9999; padLeft = 4; break;
        case 7 : maxI = 999; padLeft = 3; break;
        case 8 : maxI = 99; padLeft = 2; break;
        case 9 : maxI = 9; padLeft = 1; break;
    }

    for (var i=0; i<=maxI; i++)
    {
        var temp = "" + i;
        while (temp.length < padLeft) temp = "0" + temp;
        var cpr = datePart + temp;
       
        if (modulus11Check(cpr))
            list += cpr + ((i%2 == 0) ? " kvinde" : " mand") + "<br>";
    }

    c.innerHTML = list;
}

function cprCheck(flt)
{
    var cpr = flt.value, c = document.getElementById('cprcheck');
    if (cpr.match(/^\d{6}-?\d{4}$/))
    {
        cpr = cpr.replace(/-/g, "");
        var match = modulus11Check(cpr);
        var dag = new Date(+cpr.substring(4,2), +cpr.substring(2,2), +cpr.substring(0,2));
        if (dag.getTime() > new Date().getTime() || !match)
        {
            c.style.color = "red";
            c.innerHTML = "Ugyldigt Cpr nr.";
        }
        else
        {
            c.style.color = "green";
            c.innerHTML = "Gyldigt Cpr nr. (Køn: " + ((cpr.match(/[13579]$/)) ? "Mand" : "Kvinde") + ")";
        }
    }
    else
    {
        if (cpr.match(/^\d{6,9}$/)) listAll(cpr);
        c.style.color = "#aaa";
        c.innerHTML = (cpr.length>0) ? "Validerer ..." : "&lt;-- Indtast CPR nr.";
    }
}
</script>
</head>
<body>
<form name="form1" method="post" onSubmit="">
    <input type="text" name="cpr" onkeyup="cprCheck(this)">&nbsp;<span id="cprcheck" style="color:#aaa;">&lt;-- Indtast CPR nr.</span><br>
    <input type="submit" name="Submit" value="Submit">
</form>

<div id="cprlist">
</div>

</body>
</html>
Avatar billede nielle Nybegynder
29. august 2006 - 17:07 #11
29/08-2006 16:24:45> Det kan du f.eks. gøre ved at sætte en style på:

<div id="cprlist">
</div>

- hvor at du angiver skriftypen.
Avatar billede xvid Seniormester
29. august 2006 - 17:27 #12
jeg tænkte på om det er muligt at tilføje farve til den resultat man får frem f.eks
mand 00ff00
kvinde ff0000

ellers så ser det rigtig godt ud ;-)
Avatar billede nielle Nybegynder
29. august 2006 - 17:46 #13
Det er altså tilladt at eksperimentere lidt selv, men værsgod:

function listAll(datePart)
{
    var c = document.getElementById('cprlist'); list = "";
    var maxI, padLeft;
    switch (datePart.length)
    {
        case 6 : maxI = 9999; padLeft = 4; break;
        case 7 : maxI = 999; padLeft = 3; break;
        case 8 : maxI = 99; padLeft = 2; break;
        case 9 : maxI = 9; padLeft = 1; break;
    }

    for (var i=0; i<=maxI; i++)
    {
        var temp = "" + i;
        while (temp.length < padLeft) temp = "0" + temp;
        var cpr = datePart + temp;
       
        if (modulus11Check(cpr))
            list += cpr + " " + ((i%2 == 0) ? "<span style='color: ff0000'>kvinde</span>" : "<span style='color: 00ff00'>mand</span>") + "<br>";
    }

    c.innerHTML = list;
}
Avatar billede xvid Seniormester
29. august 2006 - 17:51 #14
<span> Ja selvfølge ;-)

ok tusind tak for hjælpen og smid et svar ;-)
Avatar billede nielle Nybegynder
29. august 2006 - 17:53 #15
Svar :^)
Avatar billede xvid Seniormester
29. august 2006 - 19:21 #16
Hej nielle

hvis du læser dette så vil jeg høre om det er muligt at få resultatet i to rækker

mænd    kvinde
Avatar billede xvid Seniormester
29. august 2006 - 19:44 #17
eller sådan som det er nu man med antal

1. xxxxxxxxxx mand
2. xxxxxxxxxx kvinde
3. xxxxxxxxxx mand

osv..........

eller

Mænd                        Kvinder

1. xxxxxxxxxx                xxxxxxxxxx
2. xxxxxxxxxx                xxxxxxxxxx
3. xxxxxxxxxx                xxxxxxxxxx

osv...........

håber at du forstå
Avatar billede nielle Nybegynder
29. august 2006 - 20:08 #18
Som sagt er det tilladt selv at lege med det, men her:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Valider CPR nr</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/javascript">
function modulus11Check(cpr)
{
    var chk = 0;
    for (var i=9; i>-1; i--)
    {
        chk += (+cpr.charAt(i)) * ((i>2) ? 10-i : 4-i);
    }
    return (chk%11 == 0);
}

function listAll(datePart)
{
    var c_m = document.getElementById('cprlist_m'); list_m = "";
    var c_k = document.getElementById('cprlist_k'); list_k = "";

    var maxI, padLeft;
    switch (datePart.length)
    {
        case 6 : maxI = 9999; padLeft = 4; break;
        case 7 : maxI = 999; padLeft = 3; break;
        case 8 : maxI = 99; padLeft = 2; break;
        case 9 : maxI = 9; padLeft = 1; break;
    }

    for (var i=0; i<=maxI; i++)
    {
        var temp = "" + i;
        while (temp.length < padLeft) temp = "0" + temp;
        var cpr = datePart + temp;
       
        if (modulus11Check(cpr))
            if (i%2 == 0)
                list_k += cpr + " <span style='color: ff0000'>kvinde</span><br>";
            else
                list_m += cpr + " <span style='color: 00ff00'>mand</span><br>";
    }

    c_k.innerHTML = list_k;
    c_m.innerHTML = list_m;
}

function cprCheck(flt)
{
    var cpr = flt.value, c = document.getElementById('cprcheck');
    if (cpr.match(/^\d{6}-?\d{4}$/))
    {
        cpr = cpr.replace(/-/g, "");
        var match = modulus11Check(cpr);
        var dag = new Date(+cpr.substring(4,2), +cpr.substring(2,2), +cpr.substring(0,2));
        if (dag.getTime() > new Date().getTime() || !match)
        {
            c.style.color = "red";
            c.innerHTML = "Ugyldigt Cpr nr.";
        }
        else
        {
            c.style.color = "green";
            c.innerHTML = "Gyldigt Cpr nr. (Køn: " + ((cpr.match(/[13579]$/)) ? "Mand" : "Kvinde") + ")";
        }
    }
    else
    {
        if (cpr.match(/^\d{6,9}$/)) listAll(cpr);
        c.style.color = "#aaa";
        c.innerHTML = (cpr.length>0) ? "Validerer ..." : "&lt;-- Indtast CPR nr.";
    }
}
</script>
</head>
<body>
<form name="form1" method="post" onSubmit="">
    <input type="text" name="cpr" onkeyup="cprCheck(this)">&nbsp;<span id="cprcheck" style="color:#aaa;">&lt;-- Indtast CPR nr.</span><br>
    <input type="submit" name="Submit" value="Submit">
</form>

<table style="width: 300px">
    <tr>
        <td style="width: 50%" id="cprlist_m" valign="top"></td>
        <td id="cprlist_k" valign="top"></td>
    </tr>
</table>

</body>
</html>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester