Listview Objekte Datumsvergleich

Hier können Sie Fragen bezüglich des Datenbank-/Objektmoduls stellen.
apollo23
Member
Beiträge: 48
Registriert: Di 6. Mär 2012, 01:26

Listview Objekte Datumsvergleich

Beitragvon apollo23 » Fr 24. Jul 2015, 11:40

Hallo,

ist es möglich über we:conditionAdd, we:conditionAnd in einer listview-Ausgabe nur diejenigen Objekte anzeigen zu lassen, welche sagen wir mal, nicht älter als 10 Wochen sind?

Man müsste, meiner Idee nach das aktuelle Datum auslesen können und dieses mit dem CreationDate $GLOBALS['we_doc']->CreationDate; des Objektes vergleichen können. Könnte man so eine listview mit webEdition Bordmitteln umsetzen?

Wenn ja, könnte man beim Aufruf solch einer listview gleichzeitig alle Objekte der betreffenden listview Parken, die sich außerhalb der zehn Wochen befinden?

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: Listview Objekte Datumsvergleich

Beitragvon WBTMagnum » Fr 24. Jul 2015, 13:27

apollo23 hat geschrieben: ist es möglich über we:conditionAdd, we:conditionAnd in einer listview-Ausgabe nur diejenigen Objekte anzeigen zu lassen, welche sagen wir mal, nicht älter als 10 Wochen sind?

Man müsste, meiner Idee nach das aktuelle Datum auslesen können und dieses mit dem CreationDate $GLOBALS['we_doc']->CreationDate; des Objektes vergleichen können. Könnte man so eine listview mit webEdition Bordmitteln umsetzen?
Ich denke schon, dass das möglich ist. Nachdem die Zeitangaben als timestamp gespeichert werden, sollte sich das mit einem einfachen Integer-Vergleich machen lassen. Fertige Lösung habe ich jetzt leider nicht bei der Hand.

apollo23 hat geschrieben: Wenn ja, könnte man beim Aufruf solch einer listview gleichzeitig alle Objekte der betreffenden listview Parken, die sich außerhalb der zehn Wochen befinden?
Mit der oben beschriebenen Listview+Condition Lösung ist das nicht möglich, da damit veraltete Einträge ausgeschlossen sind.

Ich sehe hier zwei Alternativen:
  1. Eine zweite Listview mit Condition für die veralteten Einträge.
  2. Eine Listview ohne Condition. Innerhalb der Listview erfolgt der Datumsvergleich und veraltete Einträge werden geparkt. Hinweis: Hier kann es allerdings zu Problemen mit der Paginierung kommen (sofern du eine verwendest).

HTH,
Sascha

Benutzeravatar
Carrear
webEdition Partner
webEdition Partner
Beiträge: 646
Registriert: Do 17. Jan 2013, 03:02
Wohnort: Hannover
Kontaktdaten:

Re: Listview Objekte Datumsvergleich

Beitragvon Carrear » Mo 27. Jul 2015, 19:43

Hinterliegen Datumsangaben in der DB tatsächlich immernoch als Timestamp? Wirft das keine Probleme bzgl. Daten vor dem 01.01.1970 auf? Ich dachte, das wäre mittlerweile umgestellt.

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: Listview Objekte Datumsvergleich

Beitragvon WBTMagnum » Mo 27. Jul 2015, 21:40

Hey Carrear,

Ich habe mir das kurz in der DB angeschaut. Die Daten werden als Unix Timestamp, und somit als leicht vergleichbare Integer-Werte, abgelegt.

Anm.: Technisch gesehen werden die Daten als LONGTEXT gespeichert. Das sollte hier aber nicht relevant sein.

Liebe Grüße,
Sascha

Benutzeravatar
Carrear
webEdition Partner
webEdition Partner
Beiträge: 646
Registriert: Do 17. Jan 2013, 03:02
Wohnort: Hannover
Kontaktdaten:

Re: Listview Objekte Datumsvergleich

Beitragvon Carrear » Mo 27. Jul 2015, 22:58

Und das ist kein Nachteil? Die neuen Date-Funktionen bieten doch ebenfalls eine ganz einfache Vergleichbarkeit von Datumsangaben und man hat nicht die Einschränkung, historische Daten nicht abspeichern zu können.

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: Listview Objekte Datumsvergleich

Beitragvon WBTMagnum » Mo 27. Jul 2015, 23:34

Carrear hat geschrieben:Und das ist kein Nachteil? Die neuen Date-Funktionen bieten doch ebenfalls eine ganz einfache Vergleichbarkeit von Datumsangaben und man hat nicht die Einschränkung, historische Daten nicht abspeichern zu können.
Ich habe das Gefühl wir reden hier aneinander vorbei. Von welcher Date-Funktion sprichst du konkret?

LG,
Sascha

Benutzeravatar
Carrear
webEdition Partner
webEdition Partner
Beiträge: 646
Registriert: Do 17. Jan 2013, 03:02
Wohnort: Hannover
Kontaktdaten:

Re: Listview Objekte Datumsvergleich

Beitragvon Carrear » Mo 27. Jul 2015, 23:40

In erster Linie geht es mal darum, dass sich in dieser Form doch keine Daten vor dem 1.1.1970 abspeichern lassen. Richtig oder Falsch?

Darüber hinaus rede ich von allem rund um die DateTime Klasse. Ich kann zwar den Timestamp nehmen und in DateTime konvertieren, aber umgekehrt wirds doch schwierig, wenn ich einen UnixTimestamp habe. Warum sind die Felder in der DB nicht einfach als DateTime angelegt?

ThomasGoebe

Re: Listview Objekte Datumsvergleich

Beitragvon ThomasGoebe » Mo 27. Jul 2015, 23:54

Carrear hat geschrieben:Warum sind die Felder in der DB nicht einfach als DateTime angelegt?
Weil es ein paar tausend Installationen gibt, die sich noch darauf verlassen (eigener PHP-Code, eigene SQL Abfragen, eigene APIs etc.), dass dort ein Timestamp steht.

Das ist also ein Problem der abwärtskompatibilität.

Benutzeravatar
Carrear
webEdition Partner
webEdition Partner
Beiträge: 646
Registriert: Do 17. Jan 2013, 03:02
Wohnort: Hannover
Kontaktdaten:

Re: Listview Objekte Datumsvergleich

Beitragvon Carrear » Mo 27. Jul 2015, 23:58

Da müssen wir sowieso irgendwann durch. Aufgeschoben ist nicht aufgehoben. Jetzt müssen wir halt fortlaufend mit UnixTimestamps klarkommen und Entwickeln. Das ist ja auch nicht so schön. Aber ich sehe das Problem.

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: Listview Objekte Datumsvergleich

Beitragvon WBTMagnum » Di 28. Jul 2015, 00:35

Carrear hat geschrieben:In erster Linie geht es mal darum, dass sich in dieser Form doch keine Daten vor dem 1.1.1970 abspeichern lassen. Richtig oder Falsch?
Falsch! Mit Unix Timestamps lassen sich sehr wohl auch Daten vor dem 1.1.1970 abbilden. Hier wird der Timestamp einfach negativ (sh. https://de.wikipedia.org/wiki/Unixzeit). Problematisch wird es nur, wenn ein 32bit Timestamp verwendet wird.

Ein weiteres Problem ist, dass <we:input type="date" /> tatsächlich nur die Eingabe von Daten ab 1970 erlaubt. Dh. hier muss man ggf. eine eigene/andere Lösung für die Eingabe anbieten.


Liebe Grüße,
Sascha

ThomasGoebe

Re: Listview Objekte Datumsvergleich

Beitragvon ThomasGoebe » Di 28. Jul 2015, 03:04

WBTMagnum hat geschrieben: Ein weiteres Problem ist, dass <we:input type="date" /> tatsächlich nur die Eingabe von Daten ab 1970 erlaubt. Dh. hier muss man ggf. eine eigene/andere Lösung für die Eingabe anbieten.
Oder <we:input type="date" /> überarbeiten.. Aber auch wenn Daten vor 1970 im Timestamp grundsätzlich möglich sind, so bin ich in den letzten Jahren mehrfach in wE an diese Grenze gestossen. Daran hat damals mal wieder niemand gedacht ;.) Inzwischen ist das glaube ich aber besser (z.B. in Klassen).

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Listview Objekte Datumsvergleich

Beitragvon mokraemer » Di 28. Jul 2015, 20:46

An einigen Stellen haben wir bereits auf "normale Zeitstempel" umgestellt.
Zum <we:input date> könnte ja jemand einfach einen FR schreiben.
Problematisch ist die Umstellung eigentlich v.a. wg. dem ganzen Altkode, der an WE vorbei in Conditions etc. UNIX-TimeStamps voraussetzt, sonst wäre das schon an einigen anderen Stellen ein "echtes Datum"
webEdition-Kern-Entwickler

Benutzeravatar
Carrear
webEdition Partner
webEdition Partner
Beiträge: 646
Registriert: Do 17. Jan 2013, 03:02
Wohnort: Hannover
Kontaktdaten:

Re: Listview Objekte Datumsvergleich

Beitragvon Carrear » Mi 29. Jul 2015, 17:25

Aber man kann doch bei der Ausgabe ein Format angeben. Dann müssen die eben angepasst werden, dass es eben im UnixTimestamp-Format ausgegeben wird?

ThomasGoebe

Re: Listview Objekte Datumsvergleich

Beitragvon ThomasGoebe » Mi 29. Jul 2015, 18:14

Du verstehst das falsch:

Code: Alles auswählen

<?php 
$myCondition = "Zeitfeld >= 1234567";
?>
<we:listview condition="mycondition">
</we:listview>
sind leider sehr oft genutzte Dinge. Natürlich deutlich komplexer als dieses Beispiel. Ich selbst habe zig Projekte, in denen ich umfangreiche Abfragen und auch Schreiboperationen direkt in der DB machen muss, da webEdition das früher mal nicht konnte. Bisher galt die Maxime: möglichst abwärtskompatibel sein.

Das kann sich aber auch noch mal ändern.

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Listview Objekte Datumsvergleich

Beitragvon mokraemer » Mi 29. Jul 2015, 18:18

@Thomas: ich denke auch langfristig muß dies geändert werden.

Bei den Conditions könnten wir das noch teilweise intern umschreiben. Problematisch blieben eigene Abfragen und eigene Feldzuweisungen.

Das ist ja der Grund, warum wir hier noch nichts gemacht haben. Die Auswirkungen sind derzeit schwer absehbar.
webEdition-Kern-Entwickler


Zurück zu „DB-/Objektmodul“

Wer ist online?

Mitglieder in diesem Forum: Ahrefs [Bot] und 3 Gäste