Avatar billede bigo Nybegynder
14. august 2006 - 10:00 Der er 8 kommentarer og
2 løsninger

beregning af dansk eller svensk

cpr nummer. og har nordmænd osse den slags?

Jeg skal lave noget som vil indbefatte dansk, svensk og norsk. Og tænker da om der er noget problem i forhold til de cpr numre der evt. er i de forskellige lande.

Jeg ved at der skal beregnes på modus11 på det danske. Men hvordan ser man om det er et valid svensk eller norsk cpr.
Avatar billede mcgoat Nybegynder
14. august 2006 - 10:04 #1
Fandt noget pseudokode til Svensk:

Steps Required:
a) Add all the digits in the odd positions (excluding last
digit).
b) Move the number in even positions into a field and multiply
the number by 2.
c) Add the digits of the result in b).
d) Add the answer in a) to the answer in c).
e) Subtract the second digit from 10.

Dunno om det er rigtigt :P
Avatar billede michael_stim Ekspert
14. august 2006 - 10:12 #2
Jeg fandt denne, og det ligner jo meget godt det mcgoat kommer med ;o)

<?php
$pn="0000000000";

if (checkPnr("$pn")) {
  echo "Korrekt personnummer!";
} else {
  echo "Felaktigt personnummer!";
}

exit;

function checkPnr($pnr) {
  if (strlen($pnr) != 10) die("Felaktigt angivet personnummer! Ange personnummret utan bindestreck, totalt 10 siffror.");
  $n = 2;
  for ($i=0; $i<9; $i++) {
      $tmp = $pnr[$i] * $n;
      ($tmp > 9) ? $sum += 1 + ($tmp % 10) : $sum += $tmp; ($n == 2) ? $n = 1 : $n = 2;
  }
  return !( ($sum + $pnr[9]) % 10);
}
?>
Avatar billede mcgoat Nybegynder
14. august 2006 - 10:14 #3
Ser ud til Svensk SSN(Social Security Number) er Modulo 10, fandt et php script til at tjekke:

<?php
    function cdv10($str)
    {
        if (is_string($str))
        {
            for ($i=0;$i<strlen($str); $i++)
            {
                $out = $out . Ord(substr($str,$i,1));
            }
        }
        else
            $out=$str;

        // is the length odd or even
        if ((int)(strlen($out)/2)    == (int)((strlen($out)/2)+0.9))
            $m=0;
        else
            $m=1;

        // sum the values for each digit, take care of values > 9
        for ($i=0;$i<strlen($out); $i++)
        {
            $m=($m==1)?2:1;
            $v=$m*substr($out, $i, 1);
            if ($v>9)
                $v=(substr($v, 0, 1)+substr($v, 1, 1));
            $sum = $sum + $v;
        }

        // what is the check digit??
        $cd=(round($sum/10+0.49)*10) - $sum;

            return $cd;
    }
?>
Avatar billede bigo Nybegynder
14. august 2006 - 10:37 #4
Så hvis man får en streng f.eks. $cpr, hvordan kan man så finde ud af om det er et svensk eller dansk cpr (og så alt efter checke på cprnummeret)
Avatar billede michael_stim Ekspert
14. august 2006 - 10:41 #5
Svensk personnummer=ÅÅMMDD
Dansk personnummer=DDMMÅÅ

Og kan du ikke validere på det må du lave en dd-box hvor du kan vælge dansk eller svensk personnummer.
Avatar billede bigo Nybegynder
14. august 2006 - 10:47 #6
Hmm. skod ;-)
Well, takker og bukker for svar (!)
Avatar billede michael_stim Ekspert
14. august 2006 - 11:17 #7
Kommer her ;o)
Avatar billede mcgoat Nybegynder
14. august 2006 - 11:23 #8
:)
Avatar billede bigo Nybegynder
14. august 2006 - 12:32 #9
Kunne man ikke sige at hvis den bare er et tal på 10 cifre og overholder en af modus metoderne så skulle den være i vinkel.
Avatar billede mcgoat Nybegynder
14. august 2006 - 12:51 #10
joh er nok den nemmeste måde. For man kan jo ikke helt se om det er den ene eller den anden.

se. ÅÅMMDD
dk. DDMMÅÅ

hvis en person er født D. 6 Juni 2006, så vil det jo blive 060606 både på den danske og svenske metode.
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

IT-JOB

Riskpoint A/S (Riskpoint Solutions Limited)

Senior Developer

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Vil du være med til at opbygge og udvikle Forsvarets dronekapacitet?

Capgemini Danmark A/S

Client Partner