Accueil   Accueil    Forum   Forum    Download   Download    Livre d'or   Livre d'or    Contact   Contact    Liens Web   Liens Web

Gérer un code barre (code 39) - CMS KwsPHP - Le site clés en main

Colonne de gauche

Espace membre

Privé Masquer le formulaire de connexion


Se souvenir de moi ?


Mot de passe oublié

Menu

Forum

Sujets Importants

fleche basForum : Masquer l’entête

Accès rapide :

 

Effectuer une Recherche avancée OU


fleche basGérer un code barre (code 39)  [1 réponse]

fleche bas

ΨFifi69
Manager
starsr6.png


avatar
Hors ligne

Nombre de posts: 1191 (0.17/Jour)
Inscrit(e) le: 28 juillet 2007
Visiter son site
Imprimer Permalien mardi 7 janvier 2014 à 19:01  
Bonjour

Voici un bout de code qui permet de générer une image de code barre type 3to9.
Utile pour gérer une carte d'adhérent, un pointage, une gestion de stock, etc....

L'avantage du code39 est qu'il est facile à générer, car il ne nécessite aucun algorithme.
Chaque caractère est mis bout à bout.

Créez la page code39.php dans le dossier includes

Code PHP :
Pour copier le contenu exact du code,
Veuillez citer le message
  1.  
  2. <?php
  3. /* GENERER UN CODE BARRE CODE 39 AVEC PHP/GD
  4. * Source : http://thierry-godin.developpez.com/, Correction : Fifi69
  5. * Uploader dans includes
  6. * echo "<img src='includes/code39.php?string=" . htmlentities($string_a_coder,ENT_QUOTES,"ISO8859-1") . "&amp;h=25&amp;control=1'/>";
  7. * h et control sont optionnels
  8. *************************************/
  9.  
  10. //Vérification des paramètres passés par l'URL
  11. if(isset($_GET['string'])) {
  12.     //$TheString = preg_replace('&#164;[^0-9A-Z. $/+%*-]&#164;', '', strtoupper($_GET['string']));
  13.     $TheString = preg_replace('[^0-9A-Z. $/+%*-]', '', strtoupper($_GET['string']));
  14.     $bc_height = 20; // Hauteur des barres par defaut
  15.     if(isset($_GET['h'])) {$bc_height = $_GET['h'];}
  16.  
  17.     // tableau Char -> Code
  18.     $TabCode = array(
  19.        '0' =>  '101000111011101',
  20.        '1' =>  '111010001010111',
  21.        '2' =>  '101110001010111',
  22.        '3' =>  '111011100010101',
  23.        '4' =>  '101000111010111',
  24.        '5' =>  '111010001110101',
  25.        '6' =>  '101110001110101',
  26.        '7' =>  '101000101110111',
  27.        '8' =>  '111010001011101',
  28.        '9' =>  '101110001011101',
  29.        
  30.        'A' =>  '111010100010111',
  31.        'B' =>  '101110100010111',
  32.        'C' =>  '111011101000101',
  33.        'D' =>  '101011100010111',
  34.        'E' =>  '111010111000101',
  35.        'F' =>  '101110111000101',
  36.        'G' =>  '101010001110111',
  37.        'H' =>  '111010100011101',
  38.        'I' =>  '101110100011101',
  39.        'J' =>  '101011100011101',
  40.        'K' =>  '111010101000111',
  41.        'L' =>  '101110101000111',
  42.        'M' =>  '111011101010001',
  43.        'N' =>  '101011101000111',
  44.        'O' =>  '111010111010001',
  45.        'P' =>  '101110111010001',
  46.        'Q' =>  '101010111000111',
  47.        'R' =>  '111010101110001',
  48.        'S' =>  '101110101110001',
  49.        'T' =>  '101011101110001',
  50.        'U' =>  '111000101010111',
  51.        'V' =>  '100011101010111',
  52.        'W' =>  '111000111010101',
  53.        'X' =>  '100010111010111',
  54.        'Y' =>  '111000101110101',
  55.        'Z' =>  '100011101110101',
  56.        
  57.        '-' =>  '100010101110111',
  58.        '.' =>  '111000101011101',
  59.        ' ' =>  '100011101011101',
  60.        '$' =>  '100010001000101',
  61.        '/' =>  '100010001010001',
  62.        '+' =>  '100010100010001',
  63.        '%' =>  '101000100010001',
  64.        '*' =>  '100010111011101'
  65.     );
  66.  
  67.     // convertir la chaine en code
  68.     $CodeBar = '';
  69.     $TabKeys = array_keys($TabCode); // tableau des caractères seuls
  70.     
  71.     $TotalChar = 0;
  72.     for($i = 0; $i < strlen($TheString); $i++) {
  73.         $CodeBar .= "0".$TabCode[$TheString[$i]];
  74.         //récupération de l'index du caractère + calcul de la somme des index
  75.         foreach($TabKeys as $key => $value) {
  76.             if($value === $TheString[$i]){ $TotalChar += $key;}
  77.         }
  78.     }
  79.  
  80.     if($_GET['control'] == "1") {  //ajouter le caratère de controle
  81.         $IndexControl = bcmod($TotalChar, 43); //calculer le caractère de controle
  82.         $CodeBar.= "0" . $TabCode[$TabKeys[$IndexControl]];
  83.     }
  84.  
  85.     $xCodeBar = $TabCode["*"] . $CodeBar . "0" . $TabCode["*"]; //on rajoute * en début et en fin de code
  86.  
  87.     $thumb = imagecreatetruecolor(500, $bc_height); //création de l'image temporaire
  88.     $fond = imagecolorallocate($thumb, 255, 255, 255); // fond
  89.     imagefill($thumb, 0, 0, $fond); // remplissage avec la couleur de fond
  90.     $c_w = imagecolorallocate($thumb, 255, 255, 255); // barre blanche
  91.     $c_b = imagecolorallocate($thumb, 0, 0, 0); // barre noire
  92.     $x_ref = 0;
  93.     for($x=0; $x < strlen($xCodeBar); $x++) { // dessiner le code barre
  94.         if($xCodeBar[$x] == "1") {
  95.             imageline($thumb, $x_ref, 0, $x_ref, $bc_height, $c_b);
  96.         } else {
  97.             imageline($thumb, $x_ref, 0, $x_ref, $bc_height, $c_w);
  98.         }
  99.         $x_ref++;
  100.     }
  101.  
  102.     // Création de l'image définitive
  103.     $IMG = imagecreatetruecolor($x_ref, $bc_height);
  104.     imagefill($IMG, 0, 0, $fond);
  105.     imagecopymerge ($IMG, $thumb, 0, 0, 0, 0, 500, $bc_height, 100 );
  106.  
  107.     header("Content-type: image/png");
  108.     imagepng($IMG);
  109.     imagedestroy($IMG);
  110. }
  111. ?>
  112.  


Pour intégrer l'image du code barre :

Code PHP :
Pour copier le contenu exact du code,
Veuillez citer le message
  1. <?php  
  2. #####!!!#####
  3.  
  4. <img src="'.$K_url_site.'includes/code39.php?string='.htmlentities($id_a_coder,ENT_QUOTES,"ISO8859-1").'&amp;h=10&amp;control=1" alt="Barcode"/>
  5.  
  6. #####!!!#####
  7. ?>

A noter :
- $K_url_site n'est pas indispensable sauf si vous intégrez le code barre dans un mail (pour une confirmation d'adhésion, par exemple)
- h est en option, il permet de fixer la hauteur de l'image du code barre. Si omis, la hauteur sera de 25px.
- control est en option, il ajoute un caractère supplémentaire pour confirmer que le code est correct. en général ce n'est jamais utilisé !


Exemple d'utilisation dans une page php :
En appuyant sur la touche Echap, une invite attend la lecture du code.
Sur la plupart des lecteurs de code barre, il est possible de paramétrer un envoi automatique du la touche entrée (crlf) en fin de lecture du barcode.

Code PHP :
Pour copier le contenu exact du code,
Veuillez citer le message
  1. <?php  
  2. #####!!!#####
  3.  
  4.  
  5. <script language="javascript" type="text/javascript">    
  6.     window.onkeyup = function (event) {
  7.     if (event.keyCode === 27) {
  8.         scan();
  9.     }
  10.  
  11.     function scan() {
  12.         var codeid = prompt("Scannez le code","");
  13.         if (codeid != null) {
  14.             if (isNaN(codeid) == false) {
  15.                 location.href="index.php?mod='.$K_mod.'&ac='.$K_ac.'&sql_action=modif&int_id="+codeid;
  16.             }
  17.         }
  18.     }
  19. </script>
  20.  
  21.  
  22. #####!!!#####
  23. ?>


Enjoy !

- Site de la Cie Temps'Danse


Infos CMS KwsPHP


Informations : Avant de poster un sujet sur le forum

Veuillez avant tout vérifiez la comparaison de vos fichiers sur votre site
Mon compte / Outils / Comparaison


La recherche avancée du forum (en ciblant au mieux les options de la recherche)
La Faq - La documentation - La documentation en vidéo - Le sujet "Install et Mise à jour"
Vous devez lire en priorité le topic de la 1.6 pour en découvrir ses fonctionnalités


Afficher



ΦOtocinclus
Administrateur
stars7.png


avatar
Hors ligne

Nombre de posts: 3163 (0.43/Jour)
Inscrit(e) le: 02 septembre 2006
Visiter son site
Imprimer Permalien mardi 7 janvier 2014 à 22:00  
il n'y a plus qu'a s"équiper d'un lecteur de code barre !!

A mon avis il manque quelque vérif de base sur les données entrantes, et le "remplacement" des caractères non pris en compte par le code barre est un peu "simpliste" ...


LES C0NS, ÇA OSE TOUT. C'EST MÊME À ÇA QU'ON LES RECONNAÎT.

Michel Audiard


fleche basGérer un code barre (code 39)  [1 réponse]