Managed Server
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: Shopversion 2.0.1.0 - Sonderangebote mit Startdatum in der Zukunft

    maidofkent

    • Fördermitglied
    • Beiträge: 124
    Guten Tag!

    Ich habe einen Artikel als Sonderangebot erstellt mit Startdatum in der Zukunft. Leider wird dieser Artikel aber sofort sowohl in der Box als auch auf der Angebotsseite angezeigt - nur halt mit Standardpreis.

    Eigentlich sollte soche Artikel dort gar nicht erscheinen bis zu dem Tag an dem das Angebot beginnt.
    Ein Test im Demoshop hat das gleiche Ergebnis geliefert.

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

    Wie kann man die Anzeige unterdrucken?

    Grüsse aus Hamburg, Christina

    Linkback: https://www.modified-shop.org/forum/index.php?topic=36095.0
    rechtstexte für onlineshop

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Mach mal bitte ein Ticket auf!
    https://trac.modified-shop.org/wiki

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Ich habe eventuell die Lösung. Ich poste sie sobald das Ticket auf ist. Ich habe nämlich keine Lust die Fehler nochmal zu suchen, wenn ich selbst auf 2.x wechle.
    Es scheint auch das expires_date zu fehlen! Es sind also 2 Bugs. Bitte den Thread hier im Ticket verlinken!

    maidofkent

    • Fördermitglied
    • Beiträge: 124
    Ticket #1080 angelegt.

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    /specials.php
    Ändere (ca Zeilen 68-72)

    Code: PHP  [Auswählen]
                              JOIN ".TABLE_SPECIALS." s
                                    ON p.products_id = s.products_id
                                       AND s.status = '1'
                                    ".$filter_join."
                              WHERE p.products_status = '1'

    Zu

    Code: PHP  [Auswählen]
                              JOIN ".TABLE_SPECIALS." s
                                    ON p.products_id = s.products_id
                                       AND s.status = '1' AND s.start_date <= NOW() AND s.expires_date >= NOW()
                                    ".$filter_join."
                              WHERE p.products_status = '1'

    Das ganze ist ungetestet, da ich im Moment keine 2.x am laufen habe! Baue es bitte kurz ein, und eine Rückmeldung, bitte! Egal ob es funktioniert, oder nicht. Wenn nicht, bitte error_reporting an und die Fehlermeldung hier posten! Danke!

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Im Ticket lese ich, das betrifft auch die Box specials ...

    Das wäre die gleiche Änderung in
    /templates/tpl_modified/source/boxes/specials.php

    Also einfach an die Zeile
    Code: PHP  [Auswählen]
                                              AND s.status = '1'
    die weiteren Filterkriterien anhängen:
    Code: PHP  [Auswählen]
     AND s.start_date <= NOW() AND s.expires_date >= NOW()

    maidofkent

    • Fördermitglied
    • Beiträge: 124
    Vielen Dank für die schnelle Antwort. Jetzt habe ich getestet. Errormeldung gab es nicht aber bei den nachstehenden Einstellungen gibt es noch ein Problem:

    Anfang: leer / Ende: leer
    Anfang: Zukunft / Ende: leer
    Anfang: Vergangenheit / Ende: leer
    Anfang: leer / Ende: leer

    Das Angebot wird nicht freigeschaltet. Wenn man sonst keine Angebote hat, ist der Link zur Angebotsseite trotzdem zu sehen. Wenn man aufdem Link klickt, lädt die Seite neu und man landet wieder auf die Startseite.

    Diese Einstellungen scheinen zu funktionieren:
    Anfang: Zukunft / Ende: Zukunft - scheint zu funktionieren (wird zurzeit nicht angezeigt)
    Anfang: leer / Ende: Zukunft - funktioniert (wird angezeigt)

    Die nachstehenden Einstellungen waren auch möglich, wobei hier m.E. eine Fehlermeldung vom System hätte kommen müssen:
    Anfang: Vergangenheit / Ende: Zukunft - funktioniert (wird angezeigt)
    Anfang: Vergangenheit / Ende: Vergangenheit - funktioniert (wird nicht angezeigt)
    Anfang: Zukunft / Ende: Vergangenheit - scheint zu funktionieren (wird zurzeit nicht angezeigt)
    Anfang: leer / Ende: Vergangenheit - funktioniert (wird nicht angezeigt)

    Glückliche Grüsse

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Ja, war ein Schnellschuss ....

    Man müsste noch abprüfen wenn das Feld leer ist, oder Unfug drin steht.

    Code: SQL  [Auswählen]
    AND (s.start_date = '' OR s.start_date = '0000-00-00 00:00:00' OR s.start_date = '1970-01-01 00:00:00' OR s.s.start_date <= NOW()) AND (s.expires_date = '' OR s.expires_date = '0000-00-00 00:00:00' OR s.expires_date = '1970-01-01 00:00:00' OR  s.expires_date >= NOW())

    Damit geht es theoretisch ....

    [EDIT Web 28 22.11.2016: Code korrigiert.]

    maidofkent

    • Fördermitglied
    • Beiträge: 124
    Startfeld leer müsste aber doch zulässig sein oder?

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Der Fehler wurde in r10417 & r10418 korrigiert.

    Grüße

    Torsten

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Top, Danke!

    karsta.de

    • Experte
    • Beiträge: 3.157
    Bitte korrigieren sonst funktionierts natürlich nicht:
    Code: SQL  [Auswählen]
    AND (s.start_date = '' OR s.start_date = '0000-00-00 00:00:00' OR s.start_date = '1970-01-01 00:00:00' OR s.s.start_date <= NOW()) AND (s.expires_date = '' OR s.expires_date = '0000-00-00 00:00:00' OR s.expires_date = '1970-01-01 00:00:00' OR  s.expires_date >= NOW())

    korrigiert:
    Code: SQL  [Auswählen]
    AND (s.start_date = '' OR s.start_date = '0000-00-00 00:00:00' OR s.start_date = '1970-01-01 00:00:00' OR s.start_date <= NOW()) AND (s.expires_date = '' OR s.expires_date = '0000-00-00 00:00:00' OR s.expires_date = '1970-01-01 00:00:00' OR  s.expires_date >= NOW())

    !!! OR s.s.start_date !!!

    BG kgd

    web28

    • modified Team
    • Beiträge: 9.404
    Das ist der offizielle FIX:

    Code: PHP  [Auswählen]
    AND (now() >= s.start_date OR s.start_date IS NULL)

    Gruss Web28

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.127
    • Geschlecht:
    Der offizielle Fix Funktioniert, zumindest bei mir, nicht bei 1.06! Allerdings habe ich die specials mal umgebaut, eventuell ist deshalb '0000-00-00 00:00:00' in der DB.
    Code: SQL  [Auswählen]
    SELECT * FROM `specials` WHERE `specials`.`expires_date` IS NULL
    Zitat
    MySQL lieferte ein leeres Resultat zurück (d. h. null Zeilen). (die Abfrage dauerte 0.0011 sek.)

    Code: SQL  [Auswählen]
    SELECT * FROM `specials` WHERE `specials`.`expires_date` IS NULL OR `specials`.`expires_date` = '0000-00-00 00:00:00' LIMIT 0 , 30

    Zitat
    Zeige Datensätze 0 - 29 (44 insgesamt, die Abfrage dauerte 0.0032 sek.)

    Wenn nach NULL gefragt wird, müssten meiner Ansicht nach 2 Dinge sichergestellt werden:
    1) In der nächsten Shopsoftware muss sichergestellt sein, dass auch wirklich NULL in die DB geschrieben wird (keine Ahung ob das schon so ist)
    2) Das Datenbankstrukturupdate für die nächste Shopversion sollte das enthalten:
    Code: SQL  [Auswählen]
    UPDATE specials SET expires_date = NULL WHERE expires_date = '0000-00-00 00:00:00';

    web28

    • modified Team
    • Beiträge: 9.404
    Habe das gerade geprüft, bei mir funktioniert es.

    0000-00-00 00:00:00 in der DB bei start_date

    Code: SQL  [Auswählen]
    AND s.status = '1' AND (now() >= s.start_date OR s.start_date IS NULL)

    Damit greift ja die erste Bedingung
    Code: SQL  [Auswählen]
    now() >= s.start_date

    NULL wird beim Update auf 2.x in die DB geschrieben und dann greift die zweite Bedingung

    Gruss Web28
    2 Antworten
    1834 Aufrufe
    24. November 2014, 18:26:13 von dmun
    10 Antworten
    6336 Aufrufe
    22. Juli 2013, 14:12:55 von web4design
    5 Antworten
    4608 Aufrufe
    12. März 2009, 07:31:41 von ChriMi
               
    anything