Barcode –> keine URL sondern Objektinformationen



  • 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ß



  • 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



  • 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



  • Puh okay!

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



  • 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



  • 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! (=



  • 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);



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



  • 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().



  • 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!



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



  • 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. ^^


 


Datenschutz / Privacy Policy