Listview Objekte mit Condition Datum heute

Hier können Sie Fragen bezüglich des Datenbank-/Objektmoduls stellen.
statist
Senior Member
Beiträge: 125
Registriert: Mo 12. Dez 2011, 14:46

Listview Objekte mit Condition Datum heute

Beitragvon statist » Do 19. Mai 2016, 10:04

Hallo zusammen,

trotz zahlreicher Beiträge zu diesem Thema klappt bei mir folgendes Szenario nicht: Verschiedene Geburtstage sind als Objekte (Datumsfeld) angelegt, Geburtstage des heutigen Tages (unabhängig vom Jahr) sollen ausgegeben werden. Mein Code lautet aktuell:

Code: Alles auswählen

<?php
$timestamp = time();
$heute = date("d.m", $timestamp);
$condition= "Geburtstag = $heute";
?>
<we:listview name="geburtstage" type="object" condition="\$condition" order="Geburtstag" classid="1" desc="true">
<we:repeat>
Alles Gute zum Geburtstag, <we:field type="text" name="Vorname" />.
</we:repeat>
</we:listview>
Vielleicht könnt Ihr mir helfen, wo hier der Denkfehler liegt?

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Listview Objekte mit Condition Datum heute

Beitragvon blickfang » Do 19. Mai 2016, 10:09

Hi,
ich würde behaupten, dass der timestamp Vergleich nicht funktioniert, je nachdem was beim Objekt als Datum gespeichert ist. Vermutlich unterscheiden sich die Millisekunden der timestamps Deiner abfrage zu dem was beim Objekt der Datenbank steht (hast Du das mal verglichen?). Versuche doch mal einen Zeitraum für den ganzen Tag als Condition zu definieren, dann ist es auch egal, welche Uhrzeit beim Objekt für das Datum gespeichert ist.

Viele Grüße
Timo
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

statist
Senior Member
Beiträge: 125
Registriert: Mo 12. Dez 2011, 14:46

Re: Listview Objekte mit Condition Datum heute

Beitragvon statist » Do 19. Mai 2016, 10:12

Hallo Timo, war auch mein Gedanke (ist ja auch hier im Forum schon diskutiert worden. Allerdings klappt folgender Ansatz auch nicht:

Code: Alles auswählen

<?php
$heute=date("m/d",time());
$condition= "Geburtstag = $heute";
?>

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Listview Objekte mit Condition Datum heute

Beitragvon blickfang » Do 19. Mai 2016, 10:15

ich dachte eher an

Code: Alles auswählen

<?php
$condition = Geburtstag >= $today AND Geburstag <= $tomorrow; ?>
?>
wobei today heute 0:00:00 Uhr und tomorrow als today plus 24 sein sollte.
Gruß
Timo
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

statist
Senior Member
Beiträge: 125
Registriert: Mo 12. Dez 2011, 14:46

Re: Listview Objekte mit Condition Datum heute

Beitragvon statist » Do 19. Mai 2016, 12:56

Das wär dann wohl so:

Code: Alles auswählen

<?php
$heute = time();
$tag = date($heute,"d");
$monat = date($heute,"m");

$today = mktime(0,0,0,$monat,$tag);
$tomorrow = mktime(23,59,59,$monat,$tag);

$condition = Geburtstag >= $today AND Geburtstag <= $tomorrow;
?>
Es werden aber alle Objekte ausgegeben. Wo ist hier der Denkfehler?

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Listview Objekte mit Condition Datum heute

Beitragvon blickfang » Do 19. Mai 2016, 13:10

fühlt sich richtig an. Lass Dir doch die Condition mal ausgeben und steck diese direkt in die Datenbank. Bin mir nicht sicher ob Du den Feldtyp in der Spaltenbezeichnung bei Condition angeben mußt "date_Geburstag"...
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

statist
Senior Member
Beiträge: 125
Registriert: Mo 12. Dez 2011, 14:46

Re: Listview Objekte mit Condition Datum heute

Beitragvon statist » Do 19. Mai 2016, 14:27

Danke für Deine Antwort. Bei <? echo $condition ?> (mit / ohne "date_") wird nichts ausgegeben. Das passt zu meiner Vermutung, dass die Condition gar nicht greift....

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

Re: Listview Objekte mit Condition Datum heute

Beitragvon mokraemer » Do 19. Mai 2016, 15:03

also in dem Quelltext fehlen mir einige " sonst kann das mal gar nicht gehen.
die Condition sollte man eher als sql angeben. Die Spalten Datum sollten eigentlich schon auf den Typ Date umgestellt sein, sodaß ein Vergleich mit einem Unixtimestamp nicht geht. Beim aktuellen Datum sollte mit

Code: Alles auswählen

DAY(CURRENT_DATE())=DAY(Geburtstag) AND MONTH(CURRENT_DATE())=MONTH(Geburtstag)
gehen (ungetestet)
webEdition-Kern-Entwickler

statist
Senior Member
Beiträge: 125
Registriert: Mo 12. Dez 2011, 14:46

Re: Listview Objekte mit Condition Datum heute

Beitragvon statist » Do 19. Mai 2016, 15:40

Danke mokraemer! Brauch ich dann hier noch UNIX_TIMESTAMP(), wenn ja, wie müsst das aussehen?

statist
Senior Member
Beiträge: 125
Registriert: Mo 12. Dez 2011, 14:46

Re: Listview Objekte mit Condition Datum heute

Beitragvon statist » Do 19. Mai 2016, 15:47

Ahh, sorry, hab grad nochmal genau gelesen, dass Du das schon beantwortet hast :wink: Hatte das gerade in der tag:referenz "listview" gelesen, dass man das noch angeben müsste.
Es sollte also so reichen?

Code: Alles auswählen

<we:listview name="geburtstage" type="object" condition="DAY(CURRENT_DATE())=DAY(Geburtstag) AND MONTH(CURRENT_DATE())=MONTH(Geburtstag)" order="Geburtstag" classid="1">

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

Re: Listview Objekte mit Condition Datum heute

Beitragvon mokraemer » Do 19. Mai 2016, 17:06

ja so ungefähr - ich hab es nicht getestet und weil hier natürlich jetzt plain-SQL reinkommt weiß ich auch nicht ob die LV das wirklich sauber verarbeitet. Nach Veröffentlichung der 7.0er hatte ich an dem Kode für die Condition noch was geändert das er etwas runder läuft, ob das SQL damit aber ganz verarbeitet wird, müßte ich auch testen.
webEdition-Kern-Entwickler

statist
Senior Member
Beiträge: 125
Registriert: Mo 12. Dez 2011, 14:46

Re: Listview Objekte mit Condition Datum heute

Beitragvon statist » Do 19. Mai 2016, 17:32

OK, kann es dann sein, dass es wegen meiner Version 6.4.4 so noch nicht klappt?

statist
Senior Member
Beiträge: 125
Registriert: Mo 12. Dez 2011, 14:46

Re: Listview Objekte mit Condition Datum heute

Beitragvon statist » Fr 20. Mai 2016, 16:38

Hallo mokraemer, bin jetzt auf 7.0, funktioniert leider immer noch nicht. Gibt es hier eine Tag-Referenz oä zum Nachlesen, oder hast Du noch einen Tipp, an was's liegt? Vielen Dank!

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Listview Objekte mit Condition Datum heute

Beitragvon blickfang » Fr 20. Mai 2016, 16:51

hast Du Dir das SQL-Query nun mal ausgeben lassen?

Code: Alles auswählen

<?php p_r($GLOBALS['lv']); ?>
dann siehst Du was die Listview condition letztlich für ein Query baut. Wenn das vernünftig aussieht, kann es eigentlich nur noch an der Abfrage-Logik selbst liegen - also das Du was abfragst was nicht zutreffen kann.
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

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

Re: Listview Objekte mit Condition Datum heute

Beitragvon mokraemer » Fr 20. Mai 2016, 18:20

ich hab doch geschrieben, daß dies erst nach der 7.0er geändert wurde - und das ich es auch erst noch ausprobieren müßte.
Da die echte Query am Ende deutlich komplexer ist, wie das was man da hinschreibt, muß die Condition komplett zerlegt werden - das ist auch der Grund warum ich nicht weiß ob der Minimal-Parser hier das überhaupt kann.
webEdition-Kern-Entwickler


Zurück zu „DB-/Objektmodul“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste