Abfrage ob Artikel älter als x Monate

  • Hallo alle!

    Gibt es eine Funktion mit der sich eine if/else Schleife realisieren lässt die wie folgt aussieht?

    Zitat

    Wenn Artikel älter als 3 Monate dann TEXT, ansonsten KEIN TEXT.

    Danke schön :razz:
    grüße

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Sehr weise, nur hilft mir das auch nicht. Setz mal einen Programmier vor Photoshop und Dreamweaver und sag "Bau mir eine schöne Website" - verlass dich drauf, 80% und mehr bringen nur hässliches Zeug zustande. Verstehst du den Gedankengang? Das designen ist mein Part, nicht das Programmieren ;-)

    Wenn jemand noch so eine Schleife parat hat, danke :-)

  • Das heißt im Umkehrschluss, dass du auch zu den 80% gehören willst, die kein Interesse daran haben sich mit den Werkzeugen die sie einsetzen auseinander zu setzen.

    Dabei machen es PHP und Wordpress einem wirklich leicht zumindest die Basics in sehr kurzer Zeit zu lernen.
    Da du immerhin schon von der Existenz von if/else (was btw. keine Schleife ist) weißt, gehe ich mal davon aus das ein gewisses Grundverständnis der Materie durchaus verhanden ist

    Ausgangspunkt ist immer Pseudocode

    Dieses Konstrukt jetzt in PHP zu übersetzen und z.B. mit dem Wordpress Loop zu kombinieren sollte jetzt kein Problem sein.

    Gruß
    Mo

  • Sagt sich so einfach :razz:

    PHP
    <?php if ( the_date(Tja was...); ) { echo ""; ?>
    <?php } else { 
    echo "
    JETZT DER TEXT" ?>
    <?php } ?>



    Wie muß denn the_date nun aussehen? Auf der Seite steht zwar die Ausgabe, aber nicht wie ich da eine Abfrage machen kann :?

  • Morris schreibt doch schon ... so ungefähr müsste es aussehen.
    Wenn heute minus postdate größer 3Mon --> Text

    Jetzt musst du für "heute" (Stichwort: time()) und "postdate" (Stichwort: post_date) noch den richtigen Code finden ... 7776000 sollte schon 3 Monaten entsprechen:

    Code
    if (heute - postdate > 7776000) {
    echo "Text";
    }

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

    Einmal editiert, zuletzt von maxe (29. Juli 2010 um 15:29)

  • Also...erstmal die Variablen bestimmen:

    Code
    ActualDate = time()
    PostDate = get_the_time()

    Dann die Differenz bilden:

    Code
    DateDifference = ((idate('Y', $ActualDate) * 12) + idate('m', $ActualDate)) - ((idate('Y', $PostDate) * 12) + idate('m', $PostDate));

    Was wird hier gemacht?

    time() und get_the_time() liefern jeweils Sekunden zurück.
    Mittels idate() holden wir uns daraus jeweils die Jahre und die Monate. Die Jahre multiplizieren wir mit 12 um diese in Monate umzurechnen. Dann werden die beiden addiert und die beiden Daten voneinander abgezogen.

    Jetzt musst du nurnoch Abfragen ob DateDifference größer 3 ist. Einen else-Zweig brauchst du, wenn ich dich richtig verstanden habe nicht.
    Deine if-Abfrage kannst du einerseits in die Loop-Abfrage integrieren, wenn garnichts angezeigt werden soll, oder du plazierst sie um die entsprechenden Elemente innerhalb des Loops.

    Gruß
    Mo

  • Morris
    wäre es denn nicht etwas weniger aufwändig, wenn man strtotime($post->post_date) von time() abzieht und dann schaut ob die Differenz größer 3Mon. (7776000) ist?

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • Morris
    wäre es denn nicht etwas weniger aufwändig, wenn man strtotime($post->post_date) von time() abzieht und dann schaut ob die Differenz größer 3Mon. (7776000) ist?

    Sicher, aber nicht so durchschaubar/nachvollziehbar und außerdem etwas ungenauer. Ich hoffe ja immer, dass Leser meiner Beiträge ja auch noch etwas lernen und verstehen, damit sie in Zukunft in der Lage sind ihre Probleme selber zu lösen oder auch besser zu beschreiben.

    Gruß
    Mo

    PS: Da waren es 1500 :)

    Einmal editiert, zuletzt von Morris (29. Juli 2010 um 15:43)

  • Dank Hilfe sieht es nun so aus:

    PHP
    <?php if (!$user_ID || (time() - get_the_time("U")) / 3600 / 24  > 90) { echo "ALT"; ?>
    <?php } else { 
    echo "
    NEU
    " ?>
    <?php } ?>



    Das einzige was nicht klappt: wenn ein Benutzer NICHT eingeloggt ist. Er führt die Abfrage auch bei Mitglieder aus :?

  • User nicht eingeloggt? Davon war bisher ja nie die Rede. Mal wieder auf die schnelle:

    PHP
    <?php if ($user_ID) {
    if (time() - get_the_time("U")) / 3600 / 24  > 90) { 
    echo "ALT"; 
    } else { 
    echo "NEU";
    }
    } ?>

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • Danke!

    So klappts:

    PHP
    <?php if (!$user_ID) {
    if ((time() - get_the_time("U")) / 3600 / 24  > 90) { 
    echo "ALT"; 
    } else { 
    echo "NEU";
    }
    } ?>



    Hat noch ne Klammer gefehlt und das Negieren. Sehr schön, danke für die Anregungen :razz:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!