ean 13 barkodlar da 13 . hane bilindiği üzere bir algoritma ile hesaplanan kontrol hanesi olarak geçmektedir.

 
İnternete yaptığım araştırmalarda java kullanılarak yapılan hesaplamalar mevcut ama ben PHP kullanılarak yapılmış bir hesaplama bulamadım, java ile yapılan örnek 91 satırlık bir kod ve javaya hakim değilseniz nasıl çalıştığını anlamak da oldukça güç bu nedenle kendim bu heseabı php kodu kullanarak yaptırdım php de aynı kod oldukça basit.

 


  <?php
$barkod = 869123321597  ;
$arrbar = str_split($barkod);
$cda = $arrbar[1] + $arrbar[3] + $arrbar[5] + $arrbar[7] + $arrbar[9] + $arrbar[11] ;
$cda = $cda * 3 ;
$cdb = + $arrbar[0] + $arrbar[2] + $arrbar[4] + $arrbar[6] + $arrbar[8] + $arrbar[10];
$cd = $cda + $cdb;
$cd = substr($cd , -1);
$cd = 10 - $cd ;
if ($cd > 9) $cd = 0 ; 
echo $cd ;
?>


ilgilenen arkadaşlar için yukarıdaki kodda neler olduğunu açıklayım.

Öncelikle hesap algoritması şu
sayının 2. 4. 6. 8 . 10. 12. hanelerini topluyoruz bunu 3 ile çarpıyoruz akabinde 1.3.5.7.9.11. haneleri toplayıp demin bulduğumuz sayı ile topluyoruz karşımıza 2 yada 3 basamaklı bir sayı çıkacaktır normal hesapta çıkan sonuç 16 ise 20 den 26 ise 30 dan ... 96 ise 100 den çıkarmamız gerekiyor çıkan sonuç kontrol basamağını oluşturuyor.

$arrbar = str_split($barkod);


burada $barkodun 12 hanesinin her bir basamağını ayırarak bir array yapısına çeviriyoruz

$cda = $arrbar[1] + $arrbar[3] + $arrbar[5] + $arrbar[7] + $arrbar[9] + $arrbar[11] ;
$cda = $cda * 3 ;
$cdb = + $arrbar[0] + $arrbar[2] + $arrbar[4] + $arrbar[6] + $arrbar[8] + $arrbar[10];
$cd = $cda + $cdb;


array haline gelen $arrbar değişkeninin 2. hanesinden itibaren birer atlayarak sayıları topluyoruz örneğe göre yaptığımı işlem şu ;

 6+1+3+2+5+7 bu rada çıkan sonucu da 3 ile çarptıyoruz sonra 1. basamaktan itibaren aynı şekilde birer atlayarak toplama işlemini yapıp bulduğumuz bu 2 sayıyı birbiri ile topluyoruz.

$cd = substr($cd , -1);
$cd = 10 - $cd ;

burada yukarıda anlatılan hesaptan farklı olarak biz sayıyı takip eden 10un katı olan sayıyı bulup çıkartma yaptırmak yerine çıkan sayının son hanesini seçip onu 10 dan çıkartarak işlemimizi tamamlıyoruz.

Ancak bu değer 0 çıkarsa 10 dan çıkarılınca 10 sonucu vereceğinden istisnai bir durum oluşur bunu önüne geçmek için de
if ($cd > 9) $cd = 0 ;  satırı ile o durumda değerin 0 olduğu bilgisini servere bildirerek işlemimizi bitirdik.

yukarıdaki işlemin sonucu 6 çıkacaktır. $barkod değişlenine post ve get değişkeni tanımlayarak ekrandan istediğiniz barkodun kontrol hanesini hesaplattıra bilirsiniz bunun için yapmanız gereken ise sayfaya

    <form id="form" name="form" method="post" action="">
        <input name="Barkod12" type="text" id="Barkod12" maxlength="12"  />
 <input name="button" type="submit" id="button" value="Hesapla" />
    </form>

kodunu ekleyip php kodunda

$barkod = 869123321597  ;

satırını

$barkod = $_POST['Barkod12'] ;

olarak değiştirdiğinizde sizin verdiğiniz değeri hesaplayan bir program elde etmiş olursunuz...

comments powered by Disqus