Modulshop - Eine große Auswahl an neuen und hilfreichen Modulen für die modified eCommerce Shopsoftware
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: MODUL: Kommentare in Bestellübersicht als Tooltip anzeigen für Shopversion 2.x

    karsta.de

    • Experte
    • Beiträge: 3.159
    Die Checkboxen sind da, wenn man ein Modul im Shop hat, mit dem man mehrere Bestellungen gleichzeitig abarbeiten kann.
    MODUL: "Bestellstatus-Schnellbearbeitung" für modified eCommerce Shopsoftware

    BG kgd

    Timm

    • Fördermitglied
    • Beiträge: 6.271
    Cool. Danke für die Info.

    Gruß Timm

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 14.028
    • Geschlecht:
    Bisschen off topic:
    Dann hoffen wir mal, daß das nicht ein 2.0.x-Shop ist, denn dort ist die Struktur der form-tags so, daß man das genannte "Bestellstatus-Schnellbearbeitung"-Modul nicht einfach so einbauen kann, ohne daß es HTML-Fehler gibt, selbst wenn es zufällig funktionieren sollte.
    Man bekommt nämlich den für die Multi-Bearbeitung nötigen form-tag nicht korrekt untergebracht.
    (Ich habe dafür eine Sonderlösung, aber das können wir im entsprechenden Thread besprechen.)

    Gruß,
    noRiddle

    Juan Carlos Silverio Gomez

    • Fördermitglied
    • Beiträge: 473
    • Geschlecht:
    [...]
    Dann hoffen wir mal, daß das nicht ein 2.0.x-Shop ist, denn dort ist die Struktur der form-tags so, daß man das genannte "Bestellstatus-Schnellbearbeitung"-Modul nicht einfach so einbauen kann, ohne daß es HTML-Fehler gibt, selbst wenn es zufällig funktionieren sollte.
    Man bekommt nämlich den für die Multi-Bearbeitung nötigen form-tag nicht korrekt untergebracht.
    [...]

    Hallo noRiddle, das ist eine 2.0.3.0 Version und das Modul von Modulfux lauft sehr sauber, ohne core dateien anzufassen. Kann ich nur empfehlen...

    Gruss
    Carlos

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 14.028
    • Geschlecht:
    Ah, okay, du hast also nicht das Teil aus dem Forum eingebaut.
    Dann sollte alles i.O. sein, Modulfux weiß ja was er macht.

    Gruß,
    noRiddle

    karsta.de

    • Experte
    • Beiträge: 3.159
    Um hier nicht alles durcheinander zu bringen, schreibe ich mal von hier > hier weiter.

    Zitat
    [12-04-2018 16:25:30] E_USER_WARNING   : LoggingManager: Backtrace #0 - /www/htdocs/w0180175/floresdelsuroeste.es/admin_QYVYCP5D44/includes/extra/footer/10_comment_at_a_glance.php called at Line 21

    das ist das error bezogen auf das modul:

    Code: PHP  [Auswählen]
     $orders_history_query = xtc_db_query("SELECT orders_id, comments FROM " . TABLE_ORDERS_STATUS_HISTORY . " WHERE orders_id IN(".$ordc_in_str.") ORDER BY orders_id DESC, date_added");

    und hier bezogen auf die database:

    Zitat
    [12-04-2018 16:25:30] E_USER_WARNING   : LoggingManager: 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ORDER BY orders_id DESC, date_added' at line 1<br/><br/>SELECT orders_id, comments FROM orders_status_history WHERE orders_id IN() ORDER BY orders_id DESC, date_added in File: floresdelsuroeste.es/inc/db_functions_mysqli.inc.php on Line: 161

    Gruss carlos

    Code: PHP  [Auswählen]
     $orders_history_query = xtc_db_query("SELECT orders_id, comments FROM " . TABLE_ORDERS_STATUS_HISTORY . " WHERE orders_id IN(".$ordc_in_str.") ORDER BY orders_id DESC, date_added");

    Stammt aus der orders_info_blocks.php und das hat auch nichts mit der CustomersNotice zu tun.

    Quelle: BETA MODUL: CustomersNotice - Hinweise für Kunden

    Stimmt dieser Teil stammt aus der Datei 10_comment_at_a_glance.php und da scheint ein Syntaxfehler drin zu sein.

    BG kgd

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 14.028
    • Geschlecht:
    Das ist nach meinem Vorschlag übernommen worden und ich benutze es in einem Test-Shop genau so, also kein Syntax-Error.
    Der der den Error hat sollte mal die Code-Passage posten wo der $ordc_in_str zusammengesetzt wird und die Zeile mit der Query.
    Da scheint ihm ein ' an nicht geeigneter Stelle reingerutscht zu sein oder eine Klammer ist verkehrt gesetzt.
    Jedenfalls ist es nicht die Original-Datei.

    Gruß,
    noRiddle

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    @kgd
    @noRiddle

    Folgendes SELECT Statement,

    Code: PHP  [Auswählen]
    $orders_history_query = xtc_db_query("SELECT orders_id, comments FROM " . TABLE_ORDERS_STATUS_HISTORY . " WHERE orders_id IN(".$ordc_in_str.") ORDER BY orders_id DESC, date_added");

    führt dann zu einem SQL- syntax Error wenn die Variable $ordc_in_str nicht gesetzt oder leer ist, bestätigt wird meine Annahme durch folgende Warnung aus Antwort #35 von kgd

    Zitat
    [12-04-2018 16:25:30] E_USER_WARNING   : LoggingManager: 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ORDER BY orders_id DESC, date_added' at line 1<br/><br/>SELECT orders_id, comments FROM orders_status_history WHERE orders_id IN() ORDER BY orders_id DESC, date_added in File: floresdelsuroeste.es/inc/db_functions_mysqli.inc.php on Line: 161

    bei der ja im Statement -> SELECT orders_id, comments FROM orders_status_history WHERE orders_id IN() ORDER BY orders_id DESC, date_added der Syntax Error hier -> ) ORDER BY orders_id DESC, date_added genau bezeichnet wird.

    Gruss
    Hanspeter

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 14.028
    • Geschlecht:
    Nicht gesetzt kann $ordc_in_str nie sein weil es korrekterweise erstmal so definiert ist:

    Code: PHP  [Auswählen]
    $ordc_in_str = '';

    Leer kann $ordc_in_str sein wenn es keinerlei Bestellungen gibt oder es Inkonsistenzen in der DB gibt (sodaß es z.B. zwar Bestellungen gibt, die Tabelle orders_status_history jedoch aus irgendwelchen Gründen nicht gefüllt ist).
    Da diese Query nicht zu einem Syntax-Error führen kann

    Code: SQL  [Auswählen]
    SELECT orders_id, comments FROM orders_status_history WHERE orders_id IN('') ORDER BY orders_id DESC, date_added;

    kann man sicherheitshalber die o.g. Erst-Definition ändern
    von

    Code: PHP  [Auswählen]
    $ordc_in_str = '';

    in

    Code: PHP  [Auswählen]
    $ordc_in_str = "''";

    oder (besser, weil man eine sinnlose Query dadurch vermeidet) man fasst den Code in if-Clauses um alle erdenklichen Fälle abzufangen.
    Hier dazu nochmal der komplette Code (bei euch heißt die Datei evtl. anders):

    Code: PHP  [Auswählen]
    <?php
    /*******************************************
    * file: 10_ord_comments.php
    * use: display comments in order_listing
    * (c) noRiddle 11-2017
    *******************************************/


    if(strpos($PHP_SELF, FILENAME_ORDERS) && !isset($_GET['action'])) {
        $ordc_in_str = '';
        $ord_comm_arr = array();

        if(xtc_db_num_rows($orders_query) > 0) {
            xtc_db_data_seek($orders_query, 0);
           
            while($ord = xtc_db_fetch_array($orders_query)) {
                $ordc_in_str .= "'".$ord['orders_id']."'".',';
            }
            $ordc_in_str = rtrim($ordc_in_str, ',');
        }

        if($ordc_in_str != '') {
            $orders_history_query_str = "SELECT orders_id, comments FROM " . TABLE_ORDERS_STATUS_HISTORY . " WHERE orders_id IN(".$ordc_in_str.") ORDER BY orders_id DESC, date_added";
            $orders_history_query = xtc_db_query($orders_history_query_str);

            while($orders_comments = xtc_db_fetch_array($orders_history_query)) {
                $ord_comm_arr[$orders_comments['orders_id']][] = $orders_comments['comments'];
            }

            foreach($ord_comm_arr as $ordid => $comm_arr) {
                $ord_comments = "";
               
                for($oc = 0, $ocl = count($comm_arr); $oc < $ocl; $oc++) {
                    if($comm_arr[$oc] != '') {
                        $ord_comments .= '<span style="display:block; margin:0 0 3px 0; padding:0 0 3px 0; border-bottom:1px dotted #000;">'.nl2br($comm_arr[$oc]).'</span>';
                    }
                }

                echo '<span class="ord-comm tooltip" style="padding:0 0 0 10px; float:right;">'.(!empty($ord_comments) ? '<img src="images/icons/comment2.gif" style="border:0;"><em>'.$ord_comments.'</em>' : '').'</span>';
            }
        }
        if($ordc_in_str != '') {
    ?>
    <style>
    .tooltip:hover em {bottom:auto; top:100%;}
    </style>
    <script>
    $(function() {
        var $tbc = $('.tableBoxCenter tr'),
            $oc = $('.ord-comm');

        $oc.each(function(index) {
            var $tbc_dtc = $tbc.eq(index + 1).find('.dataTableContent');

            $oc.eq(index).appendTo($tbc_dtc.eq(0));
        });
       
    });
    </script>
    <?php
        }
    }
    ?>

    Gruß,
    noRiddle

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Also ich kenne den Kontext in welchem diese Query steht nicht,

    Code: PHP  [Auswählen]
    $orders_history_query = xtc_db_query("SELECT orders_id, comments FROM " . TABLE_ORDERS_STATUS_HISTORY . " WHERE orders_id IN(".$ordc_in_str.") ORDER BY orders_id DESC, date_added");

    aber wenn folgende Query

    Code: PHP  [Auswählen]
    SELECT orders_id, comments FROM orders_status_history WHERE orders_id IN('') ORDER BY orders_id DESC, date_added;

    zu keinem Syntax-Error führt, wie noRiddle in Antwort #38 schreibt, dann wäre eine weitere Idee die Query wie folgt zu ändern.

    Code: PHP  [Auswählen]
    $orders_history_query = xtc_db_query("SELECT orders_id, comments FROM " . TABLE_ORDERS_STATUS_HISTORY . " WHERE orders_id IN(".(!empty($ordc_in_str) ? $ordc_in_str : "''").") ORDER BY orders_id DESC, date_added");

    Gruss
    Hanspeter

    karsta.de

    • Experte
    • Beiträge: 3.159
    :thx: Hanspeter.

    Habe gerade das Ganze noch mal getestet, damit ist die Fehlermeldung weg.

    BG kgd

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 14.028
    • Geschlecht:
    Ich würde mal untersuchen wieso bei dir $ordc_in_str leer sein kann.
    Ich würde allerdings die neue Implementation mit den if-Clauses einbauen, um sinnlose Queries zu vermeiden.
    Denn die Query ist unsinnig wenn $ordc_in_str ein leerer String ist.

    Gruß,
    noRiddle

    karsta.de

    • Experte
    • Beiträge: 3.159
    ...Leer kann $ordc_in_str sein wenn es keinerlei Bestellungen gibt oder es Inkonsistenzen in der DB gibt (sodaß es z.B. zwar Bestellungen gibt, die Tabelle orders_status_history jedoch aus irgendwelchen Gründen nicht gefüllt ist)...
    Ich würde mal untersuchen wieso bei dir $ordc_in_str leer sein kann...

    ...Taucht dann auf, wenn z.B. durch den Filter, keine Bestellungen aufgelistet werden...

    BG kgd

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Hallo kgd

    ...Taucht dann auf, wenn z.B. durch den Filter, keine Bestellungen aufgelistet werden...

    Wenn das so ist, sollte eigentlich folgender Code das Problem beheben, denn in diesem Fall ist der gesamte Code in der 'admin/includes/extra/footer/10_comment_at_a_glance.php' überflüssig.

    Code: PHP  [Auswählen]
    <?php
    /*******************************************
    * file: 10_ord_comments.php
    * use: display comments in order_listing
    * (c) noRiddle 11-2017
    *******************************************/


    if(strpos($PHP_SELF, FILENAME_ORDERS) && !isset($_GET['action']) && xtc_db_num_rows($orders_query) > 0) {

        $ord_comm_arr = array();
        xtc_db_data_seek($orders_query, 0);
       
        while($ord = xtc_db_fetch_array($orders_query)) {
            $ordc_in_str .= "'".$ord['orders_id']."'".',';
        }
        $ordc_in_str = rtrim($ordc_in_str, ',');
       
        $orders_history_query_str = "SELECT orders_id, comments FROM " . TABLE_ORDERS_STATUS_HISTORY . " WHERE orders_id IN(".$ordc_in_str.") ORDER BY orders_id DESC, date_added";
        $orders_history_query = xtc_db_query($orders_history_query_str);
       
        while($orders_comments = xtc_db_fetch_array($orders_history_query)) {
            $ord_comm_arr[$orders_comments['orders_id']][] = $orders_comments['comments'];
        }
       
        foreach($ord_comm_arr as $ordid => $comm_arr) {
            $ord_comments = "";
           
            for($oc = 0, $ocl = count($comm_arr); $oc < $ocl; $oc++) {
                if($comm_arr[$oc] != '') {
                    $ord_comments .= '<span style="display:block; margin:0 0 3px 0; padding:0 0 3px 0; border-bottom:1px dotted #000;">'.nl2br($comm_arr[$oc]).'</span>';
                }
            }
       
            echo '<span class="ord-comm tooltip" style="padding:0 0 0 10px; float:right;">'.(!empty($ord_comments) ? '<img src="images/icons/comment2.gif" style="border:0;"><em>'.$ord_comments.'</em>' : '').'</span>';
        }
    ?>
    <style>
    .tooltip:hover em {bottom:auto; top:100%;}
    </style>
    <script>
    $(function() {
        var $tbc = $('.tableBoxCenter tr'),
            $oc = $('.ord-comm');

        $oc.each(function(index) {
            var $tbc_dtc = $tbc.eq(index + 1).find('.dataTableContent');

            $oc.eq(index).appendTo($tbc_dtc.eq(0));
        });
       
    });
    </script>
    <?php
    }
    ?>
     

    Gruss
    Hanspeter

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.374
    • Geschlecht:
    Meldet ihr das Thema bitte kurz, wenn ihr eine neue Version habt, die getestet ist? :thx:

    Grüße

    Torsten
    Templateshop - Eine große Auswahl an neuen und modernen Templates für die modified eCommerce Shopsoftware
               
    anything