Prüfsumme errechnen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Prüfsumme errechnen

    hallo mal wieder,

    diesmal hab ich ein problem, ueber das jetzt wahrscheinlich einige lachen werden und als pipifax abtun. aber ich kriege es gerade nicht gebacken, eine funktion zusammenzuschustern, die nicht ueber hundertneunundvierzigtausenddreihundert und ein paar zerquetschte zeilen geht ... so ungefaehr jedenfalls sieht es in meinem kopfe aus ;-(

    was ich habe
    eine 13-stellige zahl

    was ich brauche
    eine pruefsumme, die sich so errechnet:
    von links nach rechts werden die einzelnen ziffern abwechselnd mit den faktoren 1 und 3 multipliziert und die produkte addiert ... die zahl muss dann ohne rest durch zehn teilbar sein. dann ist alles ok, sonst nicht ;-)

    beispiel
    ich habe die nummer "0724353276423"
    die pruefsumme ist dann die

    0
    7x3 = 21
    2
    4x3 = 12
    3
    5x3 = 15
    3
    2x3 = 6
    7
    6x3 = 18
    4
    2x3 = 6
    3

    --> 100

    also alles klar, die funtion koennte dann z.b. "ok" returnen, bei fehlern den fehlercode "f02" ...

    weiss jemand, wie man das elegant loesen kann?
    vielen danke schon jetzt!

  • #2
    $nummer = "0724353276423";
    for ($pruefsumme = $i = 0; $i<strlen($nummer); $i++)
    $pruefsumme += substr ($nummer, $i, 1) * ($i%2 ? 3:1);

    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      fehlt noch

      if ($pruefsumme%10==0) return true; else return false;

      oder anstatt false eben dein "f02" oder so

      Kommentar


      • #4
        PHP ok - jetzt Javascript

        hallo und vielen dank.

        das mit dem pruefen klappt prima. ich hatte es inzwischen auch - nur etwas komplizierter. alles wie immer also. jetzt brauch ich das ganze noch als javascript-funktion ...

        ich weiss, dass das hier ein php-forum ist, aber ich hab mir gedacht: hier weiss man wenigstens, was ich will, da muss ich micht mehr gross erklaeren ... also, wenn jemand mir die javascript-loesung bieten kann, immmer her damit!

        und nochmal ein herzliches merci an titus und brainbug!
        shaloemchen

        Kommentar


        • #5
          du kannst einfach die Funktion umbauen, eigentlich fast identisch:

          Code:
          function checksum(nr) {
            for (pruefsumme = i = 0; i<strlen(nr); i++) {
              pruefsumme += substr (nr, i, 1) * (i%2 ? 3:1);
              } 
            if (pruefsumme%10==0) return true; else return false; 
            }
          
          test=checksum('0724353276423');
          if (test) alert('Checksumme okay'); else alert('Checksumme falsch');
          ich denke, daß müßte klappen. Ansonsten wird sicher Titus noch was dazu sagen ;-)

          Kommentar

          Lädt...
          X