we:condition auf Datumsfelder ab 9.3.1

  • Hey,

    wir haben seit dem Update von 9.1.5 auf 9.3.1 Probleme bei Listviews mit Conditions auf Datumsfelder.
    Auf der alten Version mussten wir in der Condition zusätzlich den Feldtypen angeben, also genau so wie es in der DB stand.
    Das scheint jetzt aber nicht mehr zu funktionieren. Auch ohne den Feldtypen (z.B. "EndDate") funktioniert es nicht.

    Eigentlich gar nichts kompliziertes, hier sollen einfach alle vergangenen Events ausgegeben werden:

    <we:date type="now" format="U" to="global" nameto="currNow"/>
    <we:condition name="condEventsFilterListing">
    <we:conditionAdd field="date_EndDate" var="currNow" type="global" compare="<="/>
    </we:condition>


    <we:listview type="object" name="lvEventsArchive" rows="\$eventsArchiveListingRows" classid="1" searchable="true" order="StartDate" desc="true" condition="\$condEventsFilterListing">
    <we:ifFound>
    <we:repeat>
    gefunden
    <we:repeat>
    <we:ifFound>
    </we:listview>

    Drehe ich den compare-Operator um (>=) werden mir alle Objekte ausgegeben, auch die, die in der Vergangenheit liegen.

    Handelt es sich hier um einen Bug oder hab ich irgendeine Änderung an den Datums-Conditions verpasst?

    Viele Grüße
    Oliver Geditz

    • Best Answer
    • Official Post

    Du hast glaube ich was verpaßt.

    Die Datumsangaben sollen nicht mehr als Unix-Time angeben werden.

    Du müßtest afaik nur

    <we:conditionAdd field="EndDate" type="now" compare="<="/>

    nutzen und die Variable weglassen. (Ob aktuell date_ noch nötig ist, hab ich grad nicht auf dem Schirm - Ziel sollte eigentlich sein, das wir die Tags so nutzen wie es in WE ist und nicht, wie man es in der DB nachschauen muß)

  • Finn February 14, 2025 at 11:16 AM

    Selected a post as the best answer.
  • Hallo zusammen,

    wenn es um genau einen Zeitpunkt geht funktioniert das mit now. Was mache ich aber, wenn ich eine Zeitspanne abfragen möchte? Beispielsweise alle Objekt zwischen dem 1.1.2025 und dem 31.12.2025. Das hier funktioniert nicht:

    PHP
    <?php
    $anf = mktime(0, 0, 0, 1, 1, $GLOBALS['Jahr']);
    $ende = mktime(0, 0, 0, 12, 31, $GLOBALS['Jahr']);
    ?>
    
    <we:condition name="con">
    	<we:conditionAdd field="date_Datum" var="anf" compare=">="/>
    	<we:conditionAnd />
    	<we:conditionAdd field="date_Datum" var="ende" compare="<="/>
    </we:condition>

    Bisher hat die von mir per php erstellte Condition funktioniert. seit 9.3.1. leider nicht mehr:

    PHP
    <?php
    $con = "date_Datum BETWEEN ".mktime(0, 0, 0, 1, 1, $GLOBALS['Jahr'])." AND ".mktime(0, 0, 0, 12, 31, $GLOBALS['Jahr']);
    ?>

    Freundliche Grüße

    Martin

  • Nach langem Suchen, auch in der Bugbase hier die Lösung für mein Zeitspannenproblem:

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!