Ankündigung

Einklappen
Keine Ankündigung bisher.

eigener Filter SQL-Abfrage für Gültigkeitsabfrage

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • eigener Filter SQL-Abfrage für Gültigkeitsabfrage

    Für die Gültigkeitsdauer eines Angebots soll ein individueller Filter in der Liste gesetzt werden.
    Es sollen nur die Angebote ausgegeben werden, die zum aktuellen Zeitpunkt noch nicht das "gültig_bis" Datum erreicht haben.

    Wie lautet hier die korrekte Syntax?

    angebot_gueltig_bis>CURRENT_TIMESTAMP ist offenbar nicht richtig?!

  • #2
    Das braucht keine eigene Abfrage.
    Leichter wäre ein Zeitstempel Feld zu nutzen (was denke ich bereits getan wurde, nur damit wird ein Unix-Zeitwert geschrieben) und einen Zeitstempel-Filter dafür anlegen.
    Im Liste Modul gibt es für Anzeige Von und Anzeige Bis jeweils ein Auswahlfeld für besagte Filter.

    Die Abfrage sonst ist nicht zwingend falsch. Wichtig ist, dass das Feld einen Unixzeitstempel speichert.
    Zuletzt geändert von Tim; 28.10.2015, 10:27.
    http://www.premium-contao-themes.com

    Kommentar


    • #3
      Mhhh, so bin ich vorgegangen, aber hier wird nichts gefiltert.

      Es gibt zwei Zeitstempel:
      1. angebot_gueltig_von
      2. angebot_gueltig_bis

      Filterset "Aktiv" mit zwei Filtern wie oben (siehe Bild)

      Listenmodul: Filterset "aktiv" gewählt und "Anzeige von" und "Anzeige bis" jeweils ausgewählt (Bild)

      Es werden aber alle Datensätze angezeigt.

      Wenn ich einen manuellen Filter auf der Seite hinzufüge erhalte ich die Fehlermeldung:

      Fatal error: Uncaught exception OutOfBoundsException with message Invalid date "2015-11-15" thrown in system/modules/core/library/Contao/Date.php on line 438

      Der Filter funktioniert, wenn ich im Filterset als Standardwert ein festes Datum DD.MM.YYYY hh:mm vergebe.
      Aber genau das soll ja dynamisch für den jeweils aktuellen Tag erfolgen. Daher der Ansatz CURRENT_TIMESTAMP

      Kommentar


      • #4
        Man sollte ein Attribut vom Typ Datum/Zeitstempel nutzen. Nur dieses wird als Unix-Zeitstempel konvertiert und der Zeitstempel in der Db gespeichert.
        Nutzt man an eigenes Textfeld muss man selbst konvertieren.
        http://www.premium-contao-themes.com

        Kommentar


        • #5
          Ich hatte das gleiche Problem, die "Anzeige von/bis"-Filter im Lister scheinen nicht zu funktionieren.
          Wie eblick geschrieben hat geht das nur, wenn man im Zeitstempel-Filter einen Standardwert setzt, aber genau das will man ja nicht,
          da der Vergleich ja zum aktuellen Datum stattfinden soll.

          Ich habs jetzt über eine eigene SQL-Bedingung im Lister gelöst, "show_to" ist dabei mein "Gültig bis"-Zeitstempel-Attribut:

          show_to>=unix_timestamp(now())

          Kommentar


          • eblick
            eblick kommentierte
            Kommentar bearbeiten
            Hab Dank tj_rising!
            angebot_gueltig_von=unix_timestamp(now())

            funzt wunderbar
            Tim It's a Timestempelfeld!

        • #6
          Bei Ihm kommt doch was rein: 2015-11-15, was nicht als Standardwert gesetzt ist, sondern anscheinend im Attribut. Sieht für mich nach danach aus als wäre sein "angebot_gueltig_bis" ein reines Textfeld, kein Zeitstempelfeld.
          http://www.premium-contao-themes.com

          Kommentar


          • #7
            Ja, stimmt. Der Filterwert wird nicht vom Attribut übergeben. Ich erstell ein Ticket.

            Aää quark. Hat ja mit dem Attribut nichts zu tun. Es muss ja der aktuelle Zeitstempel rein. So oder so, da fehlt ein array_filter. Damit denkt die Liste es gäbe einen Wert vom Filter.
            Zuletzt geändert von Tim; 16.11.2015, 09:50.
            http://www.premium-contao-themes.com

            Kommentar


            • #8
              Zitat von tj_rising Beitrag anzeigen
              Ich hatte das gleiche Problem, die "Anzeige von/bis"-Filter im Lister scheinen nicht zu funktionieren.
              Wie eblick geschrieben hat geht das nur, wenn man im Zeitstempel-Filter einen Standardwert setzt, aber genau das will man ja nicht,
              da der Vergleich ja zum aktuellen Datum stattfinden soll.

              Ich habs jetzt über eine eigene SQL-Bedingung im Lister gelöst, "show_to" ist dabei mein "Gültig bis"-Zeitstempel-Attribut:

              show_to>=unix_timestamp(now())
              Ja, das Attribut liefert nur den Spaltennamen.
              Der Filter hat einen leeren Array als realen Filterwert akzeptiert. Was am Ende zu keiner Filterung führte. Hab das schon korrigiert. Der Filter arbeitet nach dem gleichen Prinzip. Die Methode von Tim ist striker, das filtert alle Einträge raus, wo ggf. gar keine Zeit gesetzt ist. Der Zeitstempelfilter ergänzt noch Einträge wo keine Zeit gesetzt ist (ähnlich wie es Contao selbst macht)

              (myTimestampField >= NOW() OR myTimestampField='')

              Beides korrekt, je nach dem was man braucht.
              http://www.premium-contao-themes.com

              Kommentar


              • #9
                Hi Tim,
                ist der "Umweg" über eine SQL-Bedingung hier jetzt noch nötig oder kann ich die Anzeige von/bis Felder nun im Modul nutzen?

                Kommentar


                • #10
                  Ich nutze die Anzeige von bis Felder. Ist aber beides nicht verkehr.
                  http://www.premium-contao-themes.com

                  Kommentar

                  Lädt...
                  X