Trade Republic - Provisionsfrei Aktien handeln
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

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.199
    • Geschlecht:
    Danke dir! :thx:

    Grüße

    Torsten

    Timm

    • Fördermitglied
    • Beiträge: 6.343
    @FräuleinGarn
    [...]
    Zusätzlich ist mir vor einer Weile schonmal folgender mysteriöser Fehler aufgefallen. Das Icon wird einer Bestellung weiter oben zugeordnet (Bestellung 24) die eigentlich keinen Kommentar enthält und bei der Bestellung 20, die diesen Kommentar enthält, wird nichts angezeigt. Bei 19 und 23 das gleiche. Ab der 25 stimmts und auch wenn ich jetzt eine neue Bestellung mit Kommentar anlege. Im produktiven Shop funktioniert es auch seit jeher.
    [...]

    Das kann ich mir nur dann vorstellen wenn es für eine Bestellung aus der Tabelle orders keinen Eintrag in der Tabelle orders_status_history gibt, was eigtl. nicht sein darf und kann.
    Mir fällt mom. auch keine Query ein die das abfangen könnte, zumindest nicht mit der IN() Funktion.
    Für jede orders_id eine einzelne Query in einem Loop aufzurufen, womit man dann das Problem abfangen könnte, wäre Overdrive und perfomance-killing.

    Danke für deine Antwort. Und wie immer ohne meinen Shop/Datenbank zu kennen der richtige Lösungsansatz.

    Order 19 und 20 haben einen Kommentar und 25 auch. Angezeigt werden diese aber bei 23,24 und 25. Davor und danach läufts richtig.

    Tatsächlich ist es so, das Order 21-24 fehlerhaft sind. Es wird keine Bestellhistorie im Backend angezeigt. In der Tabelle orders_status_history sind diese 4 Bestellungen auch nicht drin. Grund dafür scheint zu sein, dass in der Tabelle orders in der Spalte orders_date_finished ein Datum mit lauter Nullen als Zahlen angegeben wird, statt wie bei den anderen der Standardwert "NULL" als Text eingetragen ist. Warum das so ist, weiß ich nicht. Kann es nicht nachvollziehen. Ist nur bei diesen 4 Bestellungen so, die alle an einem Tag gemacht wurden. Laut meinen Beiträgen im Forum, hab ich an dem Tag wohl übers Backend eine Bestellung angelegt und geändert. Vielleicht hat es damit zu tun?

    Jetzt wollte ich das ändern. Ich kann zwar zb eine neue Auftragsbestätigung abschicken, oder den Status ändern und damit erscheint die Bestellung auch in der Tabelle orders_status_history. In der Tabelle orders ändert sich dadurch aber nichts am Feld orders_date_finished. Dadurch bleibt die fehlerhafte Reihenfolge der Tooltips. Es liegt also "nur" an dem Feld orders_date_finished. Das kann ich aber nicht bearbeiten. Er sagt dann immer, dass dort ein Datum eingegeben werden muss, obwohl bei den anderen richtigen Bestellungen das Feld auch leer ist unter bearbeiten und nur der Haken davor markiert ist. Dennoch steht dann bei den Bestellungen NULL auf der phpmyadmin Tabelle orders in Spalte "Anzeigen".

    Wie kann ich das anpassen?

    Mit deinem neuen Javascriptcode sind alle Tooltips weg. Wenn ich die komplette neue Datei von dir nutze, dann stehen alle Tooltips an der richtigen Stelle, trotz der Fehler in der Datenbank. Dann werden aber alle Kommentare angezeigt, was ich ja nicht möchte, sondern nur den ersten.

    Würde gern das Datenbankproblem zuerst lösen und verstehen.

    [ Für Gäste sind keine Dateianhänge sichtbar ]

    [ Für Gäste sind keine Dateianhänge sichtbar ]

    So sieht es bei den richtigen Bestellungen aus.
    [ Für Gäste sind keine Dateianhänge sichtbar ]

    Kann ich aber nicht ändern
    [ Für Gäste sind keine Dateianhänge sichtbar ]

    Gruß Timm

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.750
    • Geschlecht:
    • Sicherheitshalber gefragt:
      Wir reden über die aktuelleste Shop-Version ? (zumindest 2.0.2.x)
    • Das Feld orders_date_finished wird bislang im Shop nicht benutzt und hat außerdem auch keinen Einfluß auf die Darstellung der Kommentare.
      Wenn du da trotzdem etwas ändern möchtest:
      Das Feld hat den Type DATETIME, du kannst aber einfach NULL dort eingeben weil das Feld NULL erlaubt.
      Dafür sollte im Kalender-Popup eine Checkbox für NULL sein, die anhaken und nichts ins Feld schreiben.
      Wie auch immer, das ist für das Problem nicht von Bedeutung.
    • Wie ich bereits versuchte zu erklären kann es mit dem alten Code zu Durcheinander bei der Zuordnung der Kommentare zu den Bestellungen kommen wenn für Bestellungen gar kein Eintrag in der Tabelle orders_status_history ist (was normalerweise nicht sein kann, aber egal...).
    • Mit dem neuen Code werden die Kommentare eindeutig zugeordnet, egal ob Eintrage in der Tabelle orders_status_history fehlen.
      Nimm also einfach den neuen Code.
      Um lediglich den ältesten, also ersten Kommentar anzeigen zu lassen, wenn vorhanden, geht das genauso wie auch vorher.
      Ich habe jetzt gerade den Code aus dem Forum hier nicht präsent sondern nur meinen eigenen.
      Es geht jedenfalls mittels
      if($comm_arr[0] != '') {
          ...
      }

      So sieht mein Code dafür aus:
    Code: PHP  [Auswählen]
    foreach($ord_comm_arr as $ordid => $comm_arr) {
        $ord_comments = "";
               
        if($comm_arr[0] != '') {
            $ord_comments .= '<span style="display:block; margin:0 0 3px 0; padding:0 0 3px 0; border-bottom:1px dotted #000;">'.nl2br($comm_arr[0]).'</span>';
        }

        echo '<span class="ord-comm tooltip" data-ord="ord-'.$ordid.'" 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>';
    }

    Gruß,
    noRiddle

    Timm

    • Fördermitglied
    • Beiträge: 6.343
    Danke noRiddle!

    1) ja 2.0.3.0

    2) Stimmt - es liegt nur an der fehlenden Bestellhistorie. Es gibt unter phpmyadmin in dem Kalenderfeld allerdings keine Checkbox für NULL. Ich kann orders_date_finished also nicht ändern. Das Feld ist übrigens bei jeder Bestellung durch den Admin über das Backend nicht auf dem Standard NULL. Ist nicht so tragisch, weil es nur im Testshop ist, aber das sollte ja generell gleich sein egal ob die Bestellung im Frontend oder Backend ausgelöst wurde.

    3) Die Bestellhistorie bleibt leer, wenn man im Backend als Admin eine Bestellung erstellt und keine Bestellbestätigung rausschickt, oder den Status von offen zu etwas anderem ändert. Das kann aber durchaus passieren, wenn man eine Bestellung per Telefon annimmt, es um Selbstabholung geht und die Rechnung nur ausgedruckt wird, oder die Rechnung per Post zugestellt wird usw. Sollte der Status offen nicht auch schon einen Punkt in der Bestellhistorie auslösen? Ist in Ticket #1225 was zu diesem Thema? Das kann nicht jeder einsehen. Du glaub ich schon.

    4) Danke, werde ich die Tage einbauen. Mich hat das andere erstmal beschäftigt, weil ich verstehen wollte, wie es zu dem Fehler kommt. Nicht, dass irgendwas im Shop falsch läuft  und später an anderer Stelle zu Problemen führt. Nun weiß ich ja woran es liegt und hab die Bestellstatus für 21-24 geändert und schon werden die Kommentare wieder richtig angezeigt.

    Gruß Timm

    Modulfux

    • Experte
    • Beiträge: 3.590
    • Geschlecht:
    Kleine Verbesserung:

    Statt des Rumgebastel mit der Stringerweiterung für die verschiedenen orders_id
    Code: PHP  [Auswählen]
    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 ASC";
    $orders_history_query = xtc_db_query($orders_history_query_str);
     

    Sieht das Arbeiten mit einem Array nicht irgendwie cooler aus?
    Code: PHP  [Auswählen]
    while ($ord = xtc_db_fetch_array($orders_query)) {
      $ordc_in_str[] = $ord['orders_id'];
    }
    $orders_history_query = xtc_db_query(
      SELECT   orders_id,
                    ibn_billnr
      FROM     " . TABLE_ORDERS . "
      WHERE    orders_id IN (" . implode(',', $ordc_in_str) . ")
      ORDER BY orders_id DESC
    ");

    hpzeller

    • Experte
    • Beiträge: 4.130
    • Geschlecht:
    Hallo Modulfux,

    ja sieht cool aus, aber die Query entspricht überhaupt nicht dem Original.

    Gruss
    Hanspeter

    Modulfux

    • Experte
    • Beiträge: 3.590
    • Geschlecht:
    Ups, da ist doch glatt meine Kundenänderung hier eingeflossen. Es soll natürlich so aussehen:
    Original:
    Code: PHP  [Auswählen]
    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 ASC";
    $orders_history_query = xtc_db_query($orders_history_query_str);
     

    Mein Vorschlag:
    Code: PHP  [Auswählen]
    while ($ord = xtc_db_fetch_array($orders_query)) {
      $ordc_in_str[] = $ord['orders_id'];
    }
    $orders_history_query = xtc_db_query("
      SELECT   orders_id,
               comments
      FROM     "
    . TABLE_ORDERS_STATUS_HISTORY . "
      WHERE    orders_id IN ("
    . implode(',', $ordc_in_str) . ")
      ORDER BY orders_id DESC,
               date_added ASC
    "
    );
     

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.750
    • Geschlecht:
    Joo, why not.

    "Rumgebastel" ist allerdings relativ.
    Bei deiner Lösung "bastelt" halt im Hintergrund PHP selbst mittels implode() ;-).

    Wer Modulfux' Vorschlag nehmen möchte sollte dann oben das
    Code: PHP  [Auswählen]
    $ordc_in_str = '';
    ersetzen mit
    Code: PHP  [Auswählen]
    $ordc_in_str = array();

    Gruß,
    noRiddle

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.750
    • Geschlecht:
    @FräuleinGarn

    zu deiner 2.:
    Ich sehe eine Checkbox sogar auf einem deiner Screenshots, vor dem Feld selbst. Schau mal ganz oben in die Überschrift wofür die Checkbox ist.
    Wenn man in der Übersicht der Ansicht einer Tabelle direkt ins Feld klickt poppt i.d.R. ein Kalender-Plugin hoch wo die Checkbox ebenfalls zu finden ist.
    Es ist aber egal ob in dem Feld 0000-00-00 00:00:00 oder NULL steht.

    zu deiner 3.:
    Wenn die Bestellhistorie in der Tat leer bleibt bei Anlegen einer Bestellung aus dem Backend (habe ich nicht getestet) so halte ich das für einen Bug.
    In den im Ticket #1225 verlinkten Thread kann ich auch nicht sehen. Das passiert in letzter Zeit jedoch öfter und könnte ein Funktionsfehler sein.

    Gruß,
    noRiddle

    Timm

    • Fördermitglied
    • Beiträge: 6.343
    zu 2)

    Ja die Checkbox ist für NULL. Habs gestern versucht und es ging nicht. Wahrscheinlich weil ich in das Feld noch NULL eingetragen hab oder was anderes. Jedenfalls geht es damit. Nur Häkchen setzen und Feld leert sich und dann speichern. Sorry.

    Dennoch ist das ein Inkosistenz zwischen Backend- und Frontendbestellungen, die später mal wichtig sein kann.

    zu 3)
    Das mit dem Ticket schreib ich mal in Ticket #1225 mit rein. Ich hab nämlich für die beiden Punkte aus 2 und 3  plus die nicht übermittelte IP bei Backendbestellungen das Ticket #1444 eröffnet. Nicht, dass es dort um das selbe geht.

    Danke nochmal
    Gruß Timm

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.199
    • Geschlecht:
    [...]
    In den im Ticket #1225 verlinkten Thread kann ich auch nicht sehen. Das passiert in letzter Zeit jedoch öfter und könnte ein Funktionsfehler sein.
    [...]

    Das ist kein Fehler. Das ist ein internes Thema bei uns und nicht öffentlich einsehbar.

    Grüße

    Torsten

    Q

    • Fördermitglied
    • Beiträge: 1.502
    Hier noch eine zum Template passende Sprechblase.



    Code: PHP  [Auswählen]
            echo '<span class="ord-comm tooltip pos" data-ord="ord-'.$ordid.'">'.(!empty($ord_comments) ? '<img src="images/icons/comment2.gif"><em>'.$ord_comments.'</em>' : '').'</span>';

    muss dann eben der Verweis auf das Icon angepasst werden:

    Code: PHP  [Auswählen]
            echo '<span class="ord-comm tooltip pos" data-ord="ord-'.$ordid.'">'.(!empty($ord_comments) ? '<img src="images/icons/comment.png"><em>'.$ord_comments.'</em>' : '').'</span>';

    oder das Icon selbst umwandeln und umbenennen ;-)

    [EDIT Tomcraft 23.04.2018: Modul in Beitrag 1 aktualisiert.]

    Timm

    • Fördermitglied
    • Beiträge: 6.343
    Danke @noRiddle - funktioniert 1a mit deiner Änderung für nur den ersten Kommentar.

    Gruß Timm

    Pianski Roland

    • Frisch an Board
    • Beiträge: 92
    • Geschlecht:
    hab es soeben eingebaut, funzt  :thx:
    weiss zwar nicht warum, aber ich mußte es in den ordner "admin_SP486HD9UU" ablegen.
    hab zwar auch einen ordner "admin" aber da ging es nicht.
    blick ich sowiso nicht, warum hab ich 2 admin ordner hab :nixweiss:

    vielen dank
    roland

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.199
    • Geschlecht:
    Der eine Ordner "/admin/" wird unvollständig sein und kann gesichert und danach gelöscht werden. Du musst darauf achten, dass Module ja nicht wissen können wie dein Admin-Ordner bei der Installation des Shops umbenannt wurde und den Inhalt des Ordners "/admin/" aus den Modulen dann immer in deinen Ordner "admin_SP486HD9UU" kopieren.

    Grüße

    Torsten
    Modulshop - Eine große Auswahl an neuen und hilfreichen Modulen für die modified eCommerce Shopsoftware