begin process at 2012 05 27 22:19:45
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > CLEF POUR EAN 13 ET 14

CLEF POUR EAN 13 ET 14


 Information sur la source

Note :
6 / 10 - par 1 personne
6,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths & Algorithmes Classé sous :EAN, clef, Code barre, fonction Niveau :Débutant Date de création :19/09/2011 Vu :2 191

Auteur : RaftY

Ecrire un message privé
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 Description

Une petite fonction sans prétention calculant la clef pour des codes barre EAN.

Les bases de l'algo sont simples, ont somme les chiffres pairs d'un coté et impair de l'autre, puis on multiplie la somme pair par 3 en y ajoutant la somme impair. On récupère l'unité du nombre obtenu que l'ont soustrait à 10.

Attention, on détermine pair et impair en partant de la fin du code barre.

Source

  • function EanKey($barcode)
  • {
  • $barcode=strrev($barcode);
  • $sum["EVEN"]=0;
  • $sum["ODD"]=0;
  • $tab[0]="EVEN";
  • $tab[1]="ODD";
  • // debug line //print_r($tab);
  • for($i=0;$i<strlen($barcode);$i++)
  • {
  • $sum[$tab[$i%2]]+=intval(substr($barcode,$i,1));
  • }
  • $tot=$sum["EVEN"]*3+$sum["ODD"];
  • $key=10-($tot%10);
  • // debug line //print($barcode."(".$key.") ->".$sum["Even"]." ".$sum["noEv"]." ___ ".(strlen($barcode)-1)%2);
  • return $key%10;
  • }
  • //test
  • $barcode1="0123456789012";//EAN14
  • print($barcode1."(".EanKey($barcode1).") \n");
  • $barcode2="012345678901";//EAN13
  • print($barcode2."(".EanKey($barcode2).") \n");
function EanKey($barcode)
{
 $barcode=strrev($barcode);
 $sum["EVEN"]=0;
 $sum["ODD"]=0;

 $tab[0]="EVEN";
 $tab[1]="ODD";


// debug line //print_r($tab);

 for($i=0;$i<strlen($barcode);$i++)
 { 
  $sum[$tab[$i%2]]+=intval(substr($barcode,$i,1));
  }
 $tot=$sum["EVEN"]*3+$sum["ODD"];
 $key=10-($tot%10);

// debug line //print($barcode."(".$key.")  ->".$sum["Even"]." ".$sum["noEv"]." ___ ".(strlen($barcode)-1)%2);



 return $key%10;
 }



//test
$barcode1="0123456789012";//EAN14
print($barcode1."(".EanKey($barcode1).") \n");
$barcode2="012345678901";//EAN13
print($barcode2."(".EanKey($barcode2).") \n");

 Conclusion

Sortie:

0123456789012(8)
012345678901(2)



 Sources du même auteur

RÉCUPÉRER UNE IMAGE EN LIGNE (OU AUTRES FICHIERS)
Source avec Zip COURBES TENDANCE , RÉGRESSION LINÉAIRE

 Sources de la même categorie

EXEMPLE D'APPLICATION DE L'ALGORITHME DE DIJKSTRA EN PHP par philtr8
FONCTION DE CALCUL DU NOMBRE DE DUEL UNIQUE POUR UN NOMBRE N... par mtrix000
Source avec Zip Source avec une capture TRIANGLE DE PASCAL ET SON ÉQUATION par vendeeHdLR89
Source avec Zip CONVERTISSEUR LAMBERT2 ÉTENDU EN COORDONNÉE GÉOGRAPHIQUE (LO... par varfendell
FONCTION QUI VÉRIFIE SI L'ARGUMENT EST UN NOMBRE PREMIER par darkelda

 Sources en rapport avec celle ci

Source avec Zip GÉNÉRER LA CLÉ D'UN CODE-BARRE EAN13 par kalou037
Source avec Zip FONCTION PHP POUR REDIMENSIONNER UNE IMAGE ET UPLOADER DANS ... par GstJasmin
FONCTION QUI VÉRIFIE SI L'ARGUMENT EST UN NOMBRE PREMIER par darkelda
Source avec Zip Source avec une capture LOGGER LE TEMPS D'EXÉCUTION DE VOS FONCTIONS PHP par djroulo
Source avec une capture GÉNÉRATEUR DE CODE BARRE EAN13 par fyav

Commentaires et avis

Commentaire de jadu le 26/09/2011 10:10:20

Sans doute, sans doute ...

mais comme je ne sais pas à quoi ça peut servir , je reste dubitatif !!!

Commentaire de LeFauve42 le 26/09/2011 14:01:54 6/10

Bonjour,

C'est la première fois que j'entends parler de l'EAN14... C'est utilisé où ?
Par contre, ton code marche sans doute aussi pour l'UPC (auquel il suffit de rajouter un 0 au début pour le transformer en EAN13).

Ton implémentation fonctionne, mais le coup du tableau de tableau c'est un peu lourd (et inutile).

Tu peux directement utiliser $sum[0] pour les pairs et $sum[1] pour les impairs, puis avoir dans ta boucle un :
$sum[$i%2]+=intval(substr($barcode,$i,1));
ou mieux :
$sum[$i%2]+=intval($barcode[$i]));

Eric

Commentaire de RaftY le 26/09/2011 15:23:32

l'EAN 14 est entre utilisé pour les systèmes de tracabilité et suivi logistique dans les étapes pré-distribution de produits en tout genre. J'appelle pré-distribution tous l'amas complexe de sous-traitance avant que le produit ne soient dans les rayons de votre supermarché favoris.

Voir norme GS1 sur le sujet.

Il de code sur 13 chiffres et le 14eme est la clef de contrôle.

Mon code fonctionne quelque soit le nombre de chiffre fourni, dans les hypothétiques EAN12, 11, 32 ... A partir du moment ou la clef de controle , se calcule de la meêm façon ;)

Commentaire de RaftY le 26/09/2011 15:27:01

Oui, il est un peu lourd avec "EVEN" et "ODD", mais l'objectif est aussi pédagogique. Et cela marque bien la somme pair de impair. La fonction dans le programme de production est bien plus barbare en terme de code :D

Commentaire de jadu le 26/09/2011 15:45:14

OK merci de ces informations.

C'est surtout pour la logistique, finalement !

Commentaire de RaftY le 26/09/2011 16:19:01

En complément pour les personnes qui veulent faire l'impression du code à barre, c'est un code2of5 Entrelacé visuellement parlant auquel on transmet les 14 chiffres de l'EAN14 clef calculée donc.

En fait, dans mon cas de figure on m'a demandé de fournir un code DUN14, qui est un code EAN14 avec un cadre noir autour, et qui doit faire absolument apparaître les chiffres en dessous de préférence sous les cadre noir.

Commentaire de LeFauve42 le 27/09/2011 11:05:10

La cle sert surtout pour verifier après un scan que la lecture s'esrt bien passée.

Pour ton code DUN14, je suppose que tu vas utiliser GD ? ou peut-etre google charts mais tu devras ajouter le cadre et les chiffres.

Commentaire de LeFauve42 le 27/09/2011 11:06:52

> Oui, il est un peu lourd avec "EVEN" et "ODD", mais l'objectif est aussi pédagogique.
> Et cela marque bien la somme pair de impair. La fonction dans le programme de production
> est bien plus barbare en terme de code :D

Si c'est pédagogique, autant ne pas montrer d'horreurs aux petits jeunes qui pourraient être tentés d'imiter ces pratiques... :o)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Fonction str_shuffle! [ par jnbrunet ] Salut, voil&#224; sur mon site, je dois g&#233;n&#233;rer une clef du genre:$numero = "01234567890123456789"; $clef = str_shuffle($numero);Bon, le pro fonction email() [ par plx4ever ] Salut &#224; tous !! Mon site est h&#233;berg&#233; chez Online.net, et j'utilise donc la fonction email(). Je vous fait par de mon code : &nbsp; $Do taille d'une image en fonction de la taille de la résolution de l'écran [ par vincentstryckmans ] Bonjour, Avec la fonction imagepng($image,$filename), je g&#233;n&#232;re une image dont je souhaite voir la taille s'adapter en fonction de la r&#23 La fonction header [ par GIRAFE ENRHUMEE ] Est-ce qu'il existe une fonction comme header, qui peut &#234;tre utilis&#233;e n'importe o&#249; dans le code, m&#234;me apr&#232;s des instructions fonction mail() [ par dave21 ] Salut tous le monde,J'ai besoin d'aide sur la fonction mail(), je suis d&#233;butant en php, alors svp soyez sympa, expliquez moi en d&#233;tail, merc recuperer une valeur js dans une fonction php ? [ par floxone ] Salut &#224; tous, Voici une question b&#234;te... Je suis un peu trop sur le code pour voir o&#249; est la solution.... Merci de m'aider.J'ai un form stripslash [ par Douns ] Bonjour, j'utilise easyphp 1.6.Lorsque je veux utiliser la fonction stripslash(), mon code renvoie toujours en erreur que cette fonction est inconnue. fichier joint a la fonction mail() [ par dave21 ] Salut,Je suis d&#233;butant, alors soyez sympa, merci d'avance.Quelqu'un peux t il m'expliquer c &#224; quoi sert l'instruction content-type?Est ce qu PHP afficher du texte en fonction du jour (debutant) [ par zeguizmo ] Salut a tous ! Bon voila, je ne connais pas du tout le php, et je n'ai mat&#233;riellement pas le temps de m'y mettre maintenant. Je me d&#233;brouil toujours un pb de foreach... [ par arnold002 ] Bonjour &#224; tous,J'ai toujours un pb d'update de bdd lorsque j'utilise l'argument foreach. foreach ($annee <FON


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales