Hej... Nu har jeg siddet med denne kode hele formiddagen, men jeg kan ikke få den til at virke som den skal.
Jeg har to funktioner, som udregner et EAN-13 checkdigit og "range" mellem to EAN-13 stregkoder.
Ideen er, at brugeren skanner første og sidste stregkode i en serie og så kommer koden her med alle stregkoder i hele serien.
Jeg kan bare ikke få min funktion til at tilføje checkdigit i enden.
Hjælp modtages med kyshånd!
- <?php
-
- function EAN13CheckDigit($string)
- {
- if(strlen($string) == 12 && ctype_digit($string))
- {
- $barcode = strrev($string);
- $A = substr($barcode, 0, 1) + substr($barcode, 2, 1) + substr($barcode, 4, 1) + substr($barcode, 6, 1) + substr($barcode, 8, 1) + substr($barcode, 10, 1);
- $B = substr($barcode, 1, 1) + substr($barcode, 3, 1) + substr($barcode, 5, 1) + substr($barcode, 7, 1) + substr($barcode, 9, 1) + substr($barcode, 11, 1);
- $sum = $A*3+$B;
- $round = 10 * ceil(0.1*$sum);
- $C = $round - $sum;
- RETURN $C;
- }
- }
-
- function EAN13Range($start, $end)
- {
- if(strlen($start) == 13 && strlen($end) == 13 && ctype_digit($start) && ctype_digit($end))
- {
- $num = substr($end, 0, 12) - substr($start, 0, 12) + 1;
-
- for($i = 0; $i < $num; $i++)
- {
- $new = substr($start, 0, 12) + $i;
- $checkdigit = EAN13CheckDigit($new);
- $range[] = $new . $checkdigit;
- }
- RETURN $range;
- }
- }
-
- $barcodeSTART = "3230020100818";
- $barcodeEND = "3230020101204";
-
- echo "<pre>";
- print_r(EAN13Range($barcodeSTART, $barcodeEND));
- echo "</pre>";
-
- ?>