Avatar billede jjdk Nybegynder
19. november 2006 - 19:04 Der er 7 kommentarer og
2 løsninger

Modulus på EAN til off. fakturering

Hej derude. Mon der er en venlig sjæl, der kan hjælpe mig med noget php-kode til kontrol af korrekt indtastet EAN-nr.
Jeg ved så meget/lidt:
-Der anvendes modulus 10
-EAN-nummeret består altid af 13 cifre
Avatar billede Søren Bech Morsing Praktikant
19. november 2006 - 19:19 #1
Du skal bruge en vægtning, som skal bruges bagfra i dine 14/15 cifre (disse beregnes modolus talet af)

vægten er 1-2-1-2 osv.

så ganger du det bagerste tal i din EAN kode med 1 og gemmer summen.
Ganger 2. bagerste tal med 2 (og lægger til din sum)

Til sidst tager du din sum og dividere med 10 (lav en moduls: sum MOD 10)
- så bliver jeg dig svar skyldig om resten er dit modolus tal, eller du skal tage 10 og trække tallet fra.

Men kigger lige efter et link til dig, du kan finde hjælp til det overalt vedr. det offentlige
Avatar billede Søren Bech Morsing Praktikant
19. november 2006 - 19:20 #2
Glem min forklaring, tænkte på betaler ID på FI/giro kort.

Her er forklaringen:
http://www.cronus.dk/documents/00017.pdf
Avatar billede jjdk Nybegynder
19. november 2006 - 19:36 #3
Jo tak, men jeg har de samme oplysninger.
Det jeg efterlyser er PHP-koden, som jeg ikke kan gennemskue, da jeg ikke er så dygtig på dette område.
Avatar billede Søren Bech Morsing Praktikant
19. november 2006 - 19:43 #4
kan du PHP eller ikke?

Du skal betragte dine 12 cifre som en tekststreng.

Lav en variabel: eansum

Gennemløb nu denne streng i en Løkke (bagfra): for i = 12 to 0

hvis i MODULUS 2 = 0, gang med 2 (eller 1, angivet i manualen)
ellers gang med 1
- læg resultat i eansum hver gang.

Gør til sidst hvad manualen foreslår: eansum MODULUS 10

Mere kan jeg ikke hjælpe med, kender ikke PHP
Avatar billede jjdk Nybegynder
19. november 2006 - 19:57 #5
Jeg gætter på, at jeg kan 2-5% php, og står lidt på bar bund med denne opgave.
Jeg er dog glad for dine input alligevel, da det giver lidt klarhed over regnestykket. Jeg ser lige om, der kommer lidt mere input - ellers må jeg igang med at lede efter lidt mere inspiration.
Avatar billede jjdk Nybegynder
19. november 2006 - 22:59 #6
Min begrænsede viden om PHP rækker til følgende kode, som i øvrigt virker.
<?
$tal=5798009040756;
$ciffer1 = substr($tal, 0, 1);
$ciffer2 = substr($tal, 1, 1);
$ciffer3 = substr($tal, 2, 1);
$ciffer4 = substr($tal, 3, 1);
$ciffer5 = substr($tal, 4, 1);
$ciffer6 = substr($tal, 5, 1);
$ciffer7 = substr($tal, 6, 1);
$ciffer8 = substr($tal, 7, 1);
$ciffer9 = substr($tal, 8, 1);
$ciffer10 = substr($tal, 9, 1);
$ciffer11 = substr($tal, 10, 1);
$ciffer12 = substr($tal, 11, 1);
$ciffer13 = substr($tal, 12, 1);

$multipl1 = $ciffer1 * 1;
$multipl2 = $ciffer2 * 3;
$multipl3 = $ciffer3 * 1;
$multipl4 = $ciffer4 * 3;
$multipl5 = $ciffer5 * 1;
$multipl6 = $ciffer6 * 3;
$multipl7 = $ciffer7 * 1;
$multipl8 = $ciffer8 * 3;
$multipl9 = $ciffer9 * 1;
$multipl10 = $ciffer10 * 3;
$multipl11 = $ciffer11 * 1;
$multipl12 = $ciffer12 * 3;
$multipl13 = $ciffer13 * 1;

$samlet = $multipl1 + $multipl2 + $multipl3 + $multipl4 + $multipl5 + $multipl6 + $multipl7 +
          $multipl8 + $multipl9 + $multipl10 + $multipl11 + $multipl12;

//Divider med 10 vis resten
$rest = $samlet %10;

$checkciffer = 10 - $rest;

If ($ciffer13 == $checkciffer) {
echo 'Korrekt tal';}
  else {
echo 'Forkert tal';}
?>
Avatar billede Søren Bech Morsing Praktikant
20. november 2006 - 06:51 #7
virker det?

For det ser da ok ud som jeg læser det. Får du en $samlet SUM ud?

Og du skal ikke dividere med 10 men bruge MODOLUS (men % kan godt være modolus, normalt er / jo divider)
Avatar billede jjdk Nybegynder
20. november 2006 - 10:50 #8
Jojo - det virker, som det skal. Jeg har testet med nogle officielle EAN numre og prøvet bevidst at ændre til en fejl.
% = modulus.
Men tak for hjælpen. Du må gerne sende et svar.
Avatar billede Søren Bech Morsing Praktikant
20. november 2006 - 13:26 #9
svar
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