Hallo Zusammen !
Ich habe hier im Forum ein Script zur Berechnung einer Prüfziffer gefunden.
Leider wird mir die falsche Prüfziffer ausgegeben, und ich weiß leider nicht , wie ich es abändern muß.(Absolute Beginner - Newbe - ...)
Folgendes Szenario :
Aus einer Tabelle orders_status_history soll aus dem Feld track_num eine 11-Stellige Zahl(Bsp. 17922483457) zzgl. einer Prüfziffer ausgegeben werden.
Die Prüfziffer errechnet sich wie folgt :
Alle ungeraden Stellen werden mit 3 multipliziert
Alle geraden Stellen werden mit 1 multipliziert
Anschließend werden die Ergebnisse addiert
Bsp.:
(1.Stelle) 1 * 3 = 3
(2.Stelle) 7 * 1 = 7
(3.Stelle) 9 * 3 = 27
(4.Stelle) 2 * 1 = 2
(5.Stelle) 2 * 3 = 6
(6.Stelle) 4 * 1 = 4
(7.Stelle) 8 * 3 = 24
(8.Stelle) 3 * 1 = 3
(9.Stelle) 4 * 3 = 12
(10.Stelle) 5 * 1 = 5
(11.Stelle) 7 * 3 = 21
Quersumme der Teilergebnisse ist 114
Die Differenz zur nächsten durch 10 teilbaren Zahl ist 6.
Prüfziffer = 6
Auszugebende Zahl ist also 179224834576
Hier ist das Script aus diesem Forum :
http://www.php-resource.de/forum/sho...threadid=10863
Hier ist noch ein weiteres, mit dem es leider auch nicht funktioniert :
http://www.php-resource.de/forum/sho...threadid=10880
Für Eure Hile wäre ich sehr, sehr dankbar !
Viele Grüße
framic
Ich habe hier im Forum ein Script zur Berechnung einer Prüfziffer gefunden.
Leider wird mir die falsche Prüfziffer ausgegeben, und ich weiß leider nicht , wie ich es abändern muß.(Absolute Beginner - Newbe - ...)
Folgendes Szenario :
Aus einer Tabelle orders_status_history soll aus dem Feld track_num eine 11-Stellige Zahl(Bsp. 17922483457) zzgl. einer Prüfziffer ausgegeben werden.
Die Prüfziffer errechnet sich wie folgt :
Alle ungeraden Stellen werden mit 3 multipliziert
Alle geraden Stellen werden mit 1 multipliziert
Anschließend werden die Ergebnisse addiert
Bsp.:
(1.Stelle) 1 * 3 = 3
(2.Stelle) 7 * 1 = 7
(3.Stelle) 9 * 3 = 27
(4.Stelle) 2 * 1 = 2
(5.Stelle) 2 * 3 = 6
(6.Stelle) 4 * 1 = 4
(7.Stelle) 8 * 3 = 24
(8.Stelle) 3 * 1 = 3
(9.Stelle) 4 * 3 = 12
(10.Stelle) 5 * 1 = 5
(11.Stelle) 7 * 3 = 21
Quersumme der Teilergebnisse ist 114
Die Differenz zur nächsten durch 10 teilbaren Zahl ist 6.
Prüfziffer = 6
Auszugebende Zahl ist also 179224834576
Hier ist das Script aus diesem Forum :
http://www.php-resource.de/forum/sho...threadid=10863
<?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 dranhängen!!!
return $cd;
}
echo cdv10(17922483457);
?>
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 dranhängen!!!
return $cd;
}
echo cdv10(17922483457);
?>
http://www.php-resource.de/forum/sho...threadid=10880
<?php
function Modulo10($strNumber) {
static $intTabelle=array(0,9,4,6,8,2,7,1,3,5);
//strNumber darf nur Ziffern zwischen 0 und 9 enthalten! <br>
for ($intIndex=0; $intIndex<strlen($strNumber); $intIndex++) {
$intUebertrag = $intTabelle[($intUebertrag + substr($strNumber, $intIndex, 1)) % 10];
}
return (10 - $intUebertrag) % 10;
}
echo Modulo10("17922483457");
?>
function Modulo10($strNumber) {
static $intTabelle=array(0,9,4,6,8,2,7,1,3,5);
//strNumber darf nur Ziffern zwischen 0 und 9 enthalten! <br>
for ($intIndex=0; $intIndex<strlen($strNumber); $intIndex++) {
$intUebertrag = $intTabelle[($intUebertrag + substr($strNumber, $intIndex, 1)) % 10];
}
return (10 - $intUebertrag) % 10;
}
echo Modulo10("17922483457");
?>
Für Eure Hile wäre ich sehr, sehr dankbar !
Viele Grüße
framic
Kommentar