IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

retrouver la valeur à 12 chiffres à partir d'un code Ean13


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut retrouver la valeur à 12 chiffres à partir d'un code Ean13
    Bonjour à tous !

    je rencontre un problème insoluble pour moi et je compte sur vous pour m'aider.

    Je travaille sur une application utilisant les codes barres EAN13 en PHP. En gros il s'agit d'une boutique. Pour les articles n'ayant pas de code barre je me sert du code interne de l'article pour générer un code barre jusqu'ici pas de souci.

    Mon problème est que je souhaiterai utiliser les codes barres fabriquant présents sur certains articles, de fait je voudrai, à partir du code barre et de mon lecteur, implémenter un algo me permettant de retrouver la valeur à 12 chiffres correspondante.

    valeur à 12 chiffres --> code EAN 13 (ok no problem)
    code EAN13 --> valeur à 12 chiffres (?????)

    Donc si quelqu'un a une idée c'est super !

  2. #2
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    code EAN13 --> valeur à 12 chiffres (?????)
    Soyons naif mais... c'est quoi un code EAN13 ? Ou plus précisement, ca a quoi comme tête ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut merci qand même
    merci quand même
    mais si la question n'est pas claire pour vous la réponse que vous me fournirez ne me conviendra surement pas.

    Désolé, sinon pour info ean13 dans google et en avant pour en savoir plus.

    ++

  4. #4
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Definition Wikipedia : code EAN13

    Par contre, je n'arrive pas à comprendre de quelle valeur sur 12 chiffres tu parles équivalant a un code EAN13 ???
    le code EAN13 a une signification bien précise, et le code barres c'est la représentation de cette valeur sur 13 chiffres mais en code barres.

    La seule chose que je verrais c'est, quand tu récupères les 13 chiffres du code EAN13 (apres lecture par code barre) c'est de retirer le dernier chiffre qui correspond à une clé de controle sur les 12 précédents...

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut iep
    Bon j'ai pas du être clair désolé.

    Il existe en php des algorithmes qui à partir d'un nombre (de 12 chiffres) permet de générer un code barre EAN13

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    function Barcode($barcode)
    {
        //Ajoute des 0 si nécessaire
        $len = 12;
        $barcode=str_pad($barcode,$len-1,'0',STR_PAD_LEFT);
        if($len==12)
            $barcode='0'.$barcode;
        //Ajoute ou teste le chiffre de contrôle
        if(strlen($barcode)==12)
            $barcode.=GetCheckDigit($barcode);
        elseif(!TestCheckDigit($barcode))
            die('erreur code barre');
        //Convertit les chiffres en barres
        $codes=array(
            'A'=>array(
                '0'=>'0001101','1'=>'0011001','2'=>'0010011','3'=>'0111101','4'=>'0100011',
                '5'=>'0110001','6'=>'0101111','7'=>'0111011','8'=>'0110111','9'=>'0001011'),
            'B'=>array(
                '0'=>'0100111','1'=>'0110011','2'=>'0011011','3'=>'0100001','4'=>'0011101',
                '5'=>'0111001','6'=>'0000101','7'=>'0010001','8'=>'0001001','9'=>'0010111'),
            'C'=>array(
                '0'=>'1110010','1'=>'1100110','2'=>'1101100','3'=>'1000010','4'=>'1011100',
                '5'=>'1001110','6'=>'1010000','7'=>'1000100','8'=>'1001000','9'=>'1110100')
            );
        $parities=array(
            '0'=>array('A','A','A','A','A','A'),
            '1'=>array('A','A','B','A','B','B'),
            '2'=>array('A','A','B','B','A','B'),
            '3'=>array('A','A','B','B','B','A'),
            '4'=>array('A','B','A','A','B','B'),
            '5'=>array('A','B','B','A','A','B'),
            '6'=>array('A','B','B','B','A','A'),
            '7'=>array('A','B','A','B','A','B'),
            '8'=>array('A','B','A','B','B','A'),
            '9'=>array('A','B','B','A','B','A')
            );
        $code='101';
        $p=$parities[$barcode{0}];
        for($i=1;$i<=6;$i++)
            $code.=$codes[$p[$i-1]][$barcode{$i}];
        $code.='01010';
        for($i=7;$i<=12;$i++)
            $code.=$codes['C'][$barcode{$i}];
        $code.='101';
     
        return $barcode;
    }
    Moi ce que je cherche à faire c'est l'inverse : à partir de mon code barre retrouver la valeur de départ et ce que je cherche c'est un script existant.

    Voila.

  6. #6
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Donc tu as une fonction qui a partir d'un nombre te retourne un code EAN13 mais en forme de code barre. qu'est ce qui t'empeche d'écrire la fonction qui prend ce code en paramètre et réalise le décodage inverse?

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    rien ...

    mais je t'avoue que je sèche pour faire la fonction inverse ...

    et ce qui métonne d'autant plus c'est que le web regorge de scripts pour générer un code barre mais je n'arrive pas à mettre la main sur un script qui permette de faire l'inverse.

    Mais sinon je suis d'accord avec toi ça va se finir comme ça sauf si un quidam a une idée !

    ++

  8. #8
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Souvent, tu prends un nombre et tu génères un code barre pour l'imprimer et qu'il soit lu par un lecteur de code barres.

    J'ai encore du mal a comprendre ton opération inverse. Logiquement tu as un code barre sur un produit, un papier, n'importe quoi et si tu veux le lire tu utilises un lecteur de code barres qui te renvoies tout seul une chaine de caractères correspondant à sa valeur en "chiffres" ou en string.

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Prenons un exemple

    j'ai un produit en stock sans code barre
    je le créé en base et son code interne en base c'est 1 je le passe à 12 chiffres soit 000000000001
    Son code barre (13 chiffres) c'est donc (sans l'image désolé) 0000000000017

    Là pas de souci

    Maintenant j'ai un produit avec un code barre fabriquant sur l'emballage et je voudrai l'utiliser plutôt que d'en générer un nouveau et j'ai besoin de savoir à quelle valeur il correspond peu importe pourquoi. Ma seule question c'est de savoir si c'est possible comment faire.

    merci de ton aide.

  10. #10
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Je persiste hein mais je ne comprends pas le problème! Sous ton code barre t'as une suite de 13 chiffres logiquement si c'est un code EAN13, tu prends les 12 premiers et c'est ta valeur. Si tu génères le code barre a partir de ces 12 chiffres tu devrais retomber sur celui de ton produit. C'est le principe meme du code barre non??

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Tout à fait !

    j'ai percuté tout à l'heure

    exemple le 000 000 000 001 donne 000 000 000 001 7

    7 étant le check digit.

    donc de la valeur à 13 chiffres on prend les 12 premiers.

    Désolé la prochaine fois j'essaierai de réfélchir. Merci quand même à tous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/12/2005, 11h53
  2. Retrouver les valeurs des paramètres des fonctions d'une DLL
    Par Bernard Martineau dans le forum Langage
    Réponses: 6
    Dernier message: 08/11/2005, 10h42
  3. Réponses: 3
    Dernier message: 03/11/2005, 16h04
  4. Réponses: 17
    Dernier message: 03/10/2005, 11h16
  5. Encore une question, pour retrouver 2 valeur d'une table
    Par danje dans le forum Langage SQL
    Réponses: 5
    Dernier message: 15/09/2005, 00h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo