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

      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