Nie pamiętam czy tutaj ktoś się o to pytał, czy gdzieś indziej (w searchu nie znalazłem odpowiedniego posta) - więc sorek, jeśli zaśmiecam forum rolleyes.gif

Skrypt (funkcja) sprawdza czy wpisana liczba (do funkcji wpisujemy typ string) jest własciwa pod względem zgodności z algorytmem obliczania tej ostatniej cyfry kontrolnej.

Kod
<?php

////////////////////////////////////////////////////////////////
// Funkcja sprawdzajaca cyfre kontrolna dla numeru w
// standardzie EAN.UCC 8,13 lub 13+2
// Na wejsciu mamy liczbe, cyfre 8,13 lub 15 znakowa (string ! - funkcja nie sprawdza typu)
// Na wyjsciu otrzymujemy true lub false
//
// droocik(na)WYTNIJ_TOTO_pdz.pl
//
// This program is free software. You can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License.      

/////////////////////////////////////////////////////////////////
function ean ($liczba)

{
$jaki_ean = strlen($liczba);

switch ($jaki_ean)
    {
    case 8:
    $typ_ean = 7;
    $j = 3;
    break;
    
    case 13:
    $typ_ean = 12;
    $j= 1;
    break;

    case 15: // EAN 13+2
    $typ_ean = 12;
    $j= 1;
    break;
    
    $typ_ean = 0;
    return false; // zaden z powyzszych - blad, false na wyjsciu!
    }

if ($typ_ean <>0) // jest 8,13,15 znakow!
{

for ($i=1; $i <= $typ_ean; $i++)
    {
    $tablica[$i] = substr($liczba,$i-1,1)*$j;
    if ($j == 3) $j=1;
    else $j=3;
    $suma = $suma+$tablica[$i];
    }

if ($suma%10 == 0) // szczegolny przypadek na reszte == 0
{
    if (($suma%10) == substr($liczba,$typ_ean,1)) return true;
    else return false;
}    
else
{
    if (10-($suma%10) == substr($liczba,$typ_ean,1)) return true;
    else return false;
}

} // koniec glownej petli if (na 7,13,15 znakow)

} // koniec funkcji




?>

To tyle. Jesli ktoś chce skrypt obliczający ostatnią cyfrę kontrolną, to można to na podstawie w/w zrobic podobnie lub napiszcie, bo to no problem.

Pozdr. winksmiley.jpg