Script Modulo 10 (für Prüfziffer)

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Script Modulo 10 (für Prüfziffer)

    Hallo Leute!!!

    Hab' ein Problemchen. Habe das folgende Script zur Generierung einer Prüfziffer (Modulo 10) im Internet gefunden; bringe es aber irgendwie nicht richtig zum Laufen!

    Kann mir jemand helfen?

    Skript:

    <?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;
    };

    ?>

  • #2
    was gibt die denn aus, wenn du am ende

    return $cd;

    dranhängst?

    Comment


    • #3
      eben gar nicht's!

      Hast Du eine Idee was da los ist?

      Comment


      • #4
        wie rufst du sie denn auf?

        ich kenne die modulo berechnung ohnehin nur in dem stil:

        $mod = 5 % 2;

        Comment


        • #5
          $zahl = 12345;

          cdv10($zahl);

          mach' ich da was falsch???

          Comment


          • #6
            cdv() muss doch irgendwas ausgeben, oder?

            änder mal dein skript wie unten:
            PHP Code:
            <?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$i1);
            if (
            $v>9)
            $v=(substr($v01)+substr($v11));
            $sum $sum $v;
            }

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

            // return dranhängen!!!
            return $cd;

            }

            ?>
            dann mach mal:

            echo cdv10(12345);

            Comment


            • #7
              hallo? ThomasM?

              Comment


              • #8
                thanks! es funktioniert!

                Comment


                • #9
                  hey beebob, bist du das da aufm bild ?
                  meine Projekte bestaunen: http://www.kleiza.de

                  Comment


                  • #10
                    nein, das ist ein altes führerscheinfoto meines vaters, als er noch 18 war. er sah damals ein wenig besser aus, als ich heute (bin 26).

                    Comment


                    • #11
                      hehe, nicht schlecht, verletzt du da nicht gegen irgendwelche copywrite rechte ? is er da wirklich erst 18 ?
                      meine Projekte bestaunen: http://www.kleiza.de

                      Comment


                      • #12
                        ich glaub stallman hat da nix gegen als gnu vater

                        Comment

                        Working...
                        X