Community
    • Categories
    • Recent
    • Popular
    • Users
    • Search
    • Register
    • Login

    Barcode –> keine URL sondern Objektinformationen

    Scheduled Pinned Locked Moved Entwicklung
    12 Posts 2 Posters 4.0k Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • DigiDanielD Offline
      DigiDaniel
      last edited by

      Hallo!

      Wie in einem anderen Thread schon geschrieben möchte ich folgendes:
      Der erzeugte QR-Barcode soll mir nicht die URL zu der Objektseite liefern sondern spezifisch gewünschte Textinhalte wie Seriennummer oder IP-Adresse anzeigen.

      Danke schon mal!

      Gruß

      1 Reply Last reply Reply Quote 0
      • DigiDanielD Offline
        DigiDaniel
        last edited by

        UPDATE –> Neuer richtiger Barcode siehe weiter unten.

        So, da mir keiner helfen wollte musste ich selber Hand anlegen. (-;

        Meine Lösung ist zwar nicht sehr elegant, aber Sie funktioniert einwandfrei, ist nachzuvollziehen und einfach anzupassen.
        Datei main_objectdetail.tpl.php unter \src\themes\default\smarty\templates_c wie folgt nach Bedarf ergänzen:

        
            #aktuelle Objekt-ID
            $_qr_objid = $_GET['objID'];   
        
            #benoetigte ID
            $_qr_abfrage = "SELECT isys_catg_model_list__isys_model_title__id FROM isys_catg_model_list WHERE isys_catg_model_list__isys_obj__id = ($_qr_objid)";
            $_qr_ergebnis = mysql_query($_qr_abfrage);
            while($_qr_row = mysql_fetch_object($_qr_ergebnis))
        {
            $_qr_id = $_qr_row->isys_catg_model_list__isys_model_title__id;
        };
        
            #Bezeichnung selektieren
            $_qr_abfrage = "SELECT isys_model_title__title FROM isys_model_title WHERE isys_model_title__id = ($_qr_id)";
            $_qr_ergebnis = mysql_query($_qr_abfrage);
            while($_qr_row = mysql_fetch_object($_qr_ergebnis))
        {
            $_qr_bezeichnung = $_qr_row->isys_model_title__title;
        };
        
            #Seriennummer selektieren
            $_qr_abfrage = "SELECT	isys_catg_model_list__serial FROM 	isys_catg_model_list WHERE isys_catg_model_list__isys_obj__id = ($_qr_objid)";
            $_qr_ergebnis = mysql_query($_qr_abfrage);
            while($_qr_row = mysql_fetch_object($_qr_ergebnis))
        {
            $_qr_sn = $_qr_row->isys_catg_model_list__serial;
        }; 
        
            #Firmware selektieren
            $_qr_abfrage = "SELECT	isys_catg_model_list__firmware  FROM 	isys_catg_model_list WHERE isys_catg_model_list__isys_obj__id = ($_qr_objid)";
            $_qr_ergebnis = mysql_query($_qr_abfrage);
            while($_qr_row = mysql_fetch_object($_qr_ergebnis))
        {
            $_qr_fw = $_qr_row->isys_catg_model_list__firmware ;
        };
        
            #Beschreibung selektieren
            $_qr_abfrage = "SELECT	isys_obj__description  FROM 	isys_obj WHERE isys_obj__id = ($_qr_objid)";
            $_qr_ergebnis = mysql_query($_qr_abfrage);
            while($_qr_row = mysql_fetch_object($_qr_ergebnis))
        {
            $_qr_beschreibung = $_qr_row->isys_obj__description;
        };
        
            $_qr_ausgabe = "Name: ".$this->_plugins['function']['isys'][0][0]->smarty_function_isys(array('type' => 'f_data','name' => 'C__CATG__TITLE','p_plain' => 1), $this)."%0ABezeichnung: ".$_qr_bezeichnung."%0ASN: ".$_qr_sn."%0AFW: ".$_qr_fw."%0A%0ABeschreibung:%0A".$_qr_beschreibung;  
        
        ?>
        

        Hier frage ich zuerst mit ganz normalen SQL-Querry Abfragen die Bezeichnung, Seriennummer, Firmware und die Beschreibung des aktuellen Objekts (mit Hilfe von $_qr_objid = $_GET['objID']) ab und verkette die Ausgabe so, wie Sie angezeigt werden soll ("%0A" erzeugt in der späteren Barcode Ausgabe einen Absatz).

        Anschließend lege ich fest, das die Barcodeerzeugungs-php (qr_img.php) diese verkette Ausgabe in einen Barcode umwandeln soll:

        ![](src/tools/php/qr/qr_img.php?d=<?php echo $_qr_ausgabe; ?>&s=2)
        

        Bitte beachten das diese Änderung nur den Barcode auf der Übersichtsseite anpasst. Nicht den Barcode der beim klicken auf den vorhandenen erscheint!

        Gruß
        Daniel

        1 Reply Last reply Reply Quote 0
        • dsD Offline
          ds
          last edited by

          Hi,
          die Datei die du dort geändert hast ist ein Smarty Cache. Es ist sinnvoller das Template selber (main_objectdetail.tpl) zu editieren, da die Änderung beim nächste Cache refresh wieder überschrieben ist.

          Gruß,
          ds

          1 Reply Last reply Reply Quote 0
          • DigiDanielD Offline
            DigiDaniel
            last edited by

            Puh okay!

            Aber wie binde ich den Code da ein, einfaches Copy&Paste reicht/funktioniert da leider nicht! )=

            1 Reply Last reply Reply Quote 0
            • dsD Offline
              ds
              last edited by

              Du kannst deinen Code in einen Php-Block setzen: [{php}]hier dann den code rein[{/php}], anstelle von und anstatt  $_qr_ausgabe = dann einfach echo

              1 Reply Last reply Reply Quote 0
              • DigiDanielD Offline
                DigiDaniel
                last edited by

                Hallo!

                Ich poste hier nun nochmal den richtigen Code inkl. dem JavaScript öffnen des Barcodes.

                • main_objecttype.tpl unter \i-doit\src\themes\default\smarty\templates\content\top
                [{php}]#aktuelle Objekt-ID
                    $_qr_objid = $_GET['objID'];   
                
                    #benoetigte ID
                    $_qr_abfrage = "SELECT isys_catg_model_list__isys_model_title__id FROM isys_catg_model_list WHERE isys_catg_model_list__isys_obj__id = ($_qr_objid)";
                    $_qr_ergebnis = mysql_query($_qr_abfrage);
                    while($_qr_row = mysql_fetch_object($_qr_ergebnis))
                {
                    $_qr_id = $_qr_row->isys_catg_model_list__isys_model_title__id;
                };
                
                    # Bezeichnung selektieren
                    $_qr_abfrage = "SELECT isys_model_title__title FROM isys_model_title WHERE isys_model_title__id = ($_qr_id)";
                    $_qr_ergebnis = mysql_query($_qr_abfrage);
                    while($_qr_row = mysql_fetch_object($_qr_ergebnis))
                {
                    $_qr_bezeichnung = $_qr_row->isys_model_title__title;
                };
                
                    #Seriennummer selektieren
                    $_qr_abfrage = "SELECT	isys_catg_model_list__serial FROM 	isys_catg_model_list WHERE isys_catg_model_list__isys_obj__id = ($_qr_objid)";
                    $_qr_ergebnis = mysql_query($_qr_abfrage);
                    while($_qr_row = mysql_fetch_object($_qr_ergebnis))
                {
                    $_qr_sn = $_qr_row->isys_catg_model_list__serial;
                }; 
                
                    #Firmware selektieren
                    $_qr_abfrage = "SELECT	isys_catg_model_list__firmware  FROM 	isys_catg_model_list WHERE isys_catg_model_list__isys_obj__id = ($_qr_objid)";
                    $_qr_ergebnis = mysql_query($_qr_abfrage);
                    while($_qr_row = mysql_fetch_object($_qr_ergebnis))
                {
                    $_qr_fw = $_qr_row->isys_catg_model_list__firmware ;
                };
                
                    #Beschreibung selektieren
                    $_qr_abfrage = "SELECT	isys_obj__description  FROM 	isys_obj WHERE isys_obj__id = ($_qr_objid)";
                    $_qr_ergebnis = mysql_query($_qr_abfrage);
                    while($_qr_row = mysql_fetch_object($_qr_ergebnis))
                {
                    $_qr_beschreibung = $_qr_row->isys_obj__description;
                };
                
                    $_qr_ausgabe = "Name: ".$this->_plugins['function']['isys'][0][0]->smarty_function_isys(array('type' => 'f_data','name' => 'C__CATG__TITLE','p_plain' => 1), $this)."%0ABezeichnung: ".$_qr_bezeichnung."%0ASN: ".$_qr_sn."%0AFW: ".$_qr_fw."%0A%0ABeschreibung:%0A".$_qr_beschreibung;  
                [{/php}]
                

                Hier werden wieder die Daten, die später im Barcode angezeigt werden sollen, per mysql abgefragt und in die Variable $_qr_ausgabe gespeichert. Die Zeilen bitte irgendwo am Anfang einfüen.

                 [![](src/tools/php/qr/qr_img.php?d=[{php}] echo $_qr_ausgabe; [{/php}]&s=1)](javascript:;) 
                

                Hier wird $_qr_ausgabe (also die gewünschten Daten) übergeben, sodass der Barcode dementsprechend angezeigt wird. Die vorhandenen Zeilen hier bitte ersetzen. Mit der Variablen "s" kann man hier jeweils für den Barcode auf der Übersichtsseite und den per Klick angezeigten die Größe einstellen.

                • qr.php unter \i-doit\src\tools\php\qr
                $l_urldaten = http_build_query($_GET);      /*Daten fuer den Barcode aus der URL holen. */
                $l_barcodedaten = substr($l_urldaten, 6);   /*"obID=" entfernen. Darf nur hier und nicht in main_objectdetail entfernt werden! */
                

                und

                ![](qr_img.php?d=<?php)" border="0" />
                

                Beides bitte in der Datei ersetzen.

                So, fertig! (=

                1 Reply Last reply Reply Quote 0
                • dsD Offline
                  ds
                  last edited by

                  Du solltest die Objekt-ID lieber aus dem _GET array entfernen, das ist sauber und sicherer. Also ungefähr so:

                  unset($_GET['objID']);
                  $l_barcodedaten = http_build_query($_GET);

                  1 Reply Last reply Reply Quote 0
                  • DigiDanielD Offline
                    DigiDaniel
                    last edited by

                    Die Objekt-ID wird doch gar nicht übergeben? Doch nur Name, Bezeichnung, Seriennummer Beschreibung und Firmware?

                    1 Reply Last reply Reply Quote 0
                    • dsD Offline
                      ds
                      last edited by

                      Es geht um die URL. Du schreibst hier, dass du die Objekt ID folgendermaßen entfernst: "$l_barcodedaten = substr($l_urldaten, 6);  /*"obID=" entfernen. Darf nur hier und nicht in main_objectdetail entfernt werden! */"
                      Das kann aber in die Hose gehen mit substr().

                      1 Reply Last reply Reply Quote 0
                      • DigiDanielD Offline
                        DigiDaniel
                        last edited by

                        Die Sache ist die, dass die Objekt-ID hier eigentlich gar nicht übergeben wird.

                        Man kann "objID" auch durch "blablabla" ersetzen. Entferne ich dies aber ganz (also nur …qr.php?[{php}] echo $_qr_ausgabe; [{/php}]) wird mir der Text im Barcode so

                        A_DFSR_Internetdaten_1#Bezeichnung:_Proliant_DL380_G7#SN:_CZ2112089Q#FW:_8_70##Beschreibung:#=
                        (also mit lauter Unterstrichen)

                        und nicht so

                        Name: DFSR Internetdaten 1#Bezeichnung: Proliant DL380 G7#SN: CZ2112089Q#FW: 8.70##Beschreibung:#

                        angezeigt!

                        1 Reply Last reply Reply Quote 0
                        • dsD Offline
                          ds
                          last edited by

                          Das mit den Unterstrichen kann aber schlecht durch die Änderung gekommen sein

                          1 Reply Last reply Reply Quote 0
                          • DigiDanielD Offline
                            DigiDaniel
                            last edited by

                            Ich weiß nicht woher das kommt! (=

                            Auf jeden Fall sind die Unterstriche da, wenn man vor den Text für die Ausgabe keine "irgendeintextoderauchnurbuchstabe=" setzt. ^^

                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post