Bestimmte Tage ausgeben

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

Dragosius

Erfahrenes Mitglied
Hallo,

ich habe folgende Frage und weiß leider aktuell nicht wie ich das am Besten lösen kann.

  • Ich habe ein eingetragenes Datum in der Datenbank.
  • Es soll eine Anzeige bei folgenden Zeiträumen sein:
    • nach einem Monat
    • nach 3 Monaten
    • nach 6 Monaten
    • nach einem Jahr
    • Ab diesem Zeitpunkt immer jedes halbe Jahr
  • Wenn es das Datum nicht gibt (weil es z.B. auch den 30. Februar fällt) soll der folgende Tag gewählt werden

Hat da jemand eine Hilfestellung für mich?


Vielen Dank
 

Sempervivum

Erfahrenes Mitglied
Es soll eine Anzeige ... sein
Das verstehe ich so, dass auf der Seite ein Text und/oder ein Bild angezeigt werden soll.

Wie soll das denn dann aussehen? Die Anzeige nach 3 Monaten für einen Tag oder dauerhaft bis die nächste Schwelle von 6 Monaten erreicht ist?
 

Dragosius

Erfahrenes Mitglied
Das sind sogenannte "Jubiläen".
Es soll als nur an diesen Tagen eine Info auf der Webseite angezeigt werden, dass man nun so und so lange registriert ist, z.B. "Du bist nun 6 Monate bei uns registriert.".
Zwischen diesen Tagen soll nichts angezeigt werden.
 

Sempervivum

Erfahrenes Mitglied
Immer gut, wenn man weiß, was sich dahinter im realen Leben verbirgt, dann versteht man es gleich besser.
Sieh dir das DateTime-Objekt an, da gibt es eine Methode add(), mit der Du zu einem gegebenen Datum (das aus der Datenbank) ein Zeitintervall hinzu addieren kannst. Dann bekommst Du die Daten der Jubiläen.
 

Dragosius

Erfahrenes Mitglied
Immer gut, wenn man weiß, was sich dahinter im realen Leben verbirgt, dann versteht man es gleich besser.
Sieh dir das DateTime-Objekt an, da gibt es eine Methode add(), mit der Du zu einem gegebenen Datum (das aus der Datenbank) ein Zeitintervall hinzu addieren kannst. Dann bekommst Du die Daten der Jubiläen.
Danke für die Hilfe, aber irgendwie bin ich noch zu blöd dafür.

Das Datum (als date gespeichert) bekomme ich ja so aus der Datenbank: $userdata['registration'];

Das heutige Datum verwende ich so:
PHP:
/**
* Gibt das heutige Datum, formatiert für die Datenbank, zurück
* @return string das heutige Datum im Format Y-m-d
*/
function heute() {
    $datum = date("Y-m-d");
    return $datum;
}


Ich bekomme es leider noch nicht hin, das nun in ein DateTime umzuwandeln.


Nachtrag:
Ich habe es nun so hin bekeommen:
$registrierungsdatum = new DateTime($userdata['registration']);
 

Dragosius

Erfahrenes Mitglied
Jetzt bin ich hier schon ein Stück weiter:
PHP:
$registrierungsdatum = new DateTime( $userdata['registration'] );
$registrierungsdatum->add(new DateInterval('P10D')); // 10 Tage

$datumHeute = new DateTime( heute() );

Wie kann ich hier in einer Abfrage herausfinden, wenn der Tag gleich ist?
Unterschiedliche Stunden sind mir hier egal.
 

Sempervivum

Erfahrenes Mitglied
Das DateTime-Objekt hat eine Methode format(), damit kannst Du jeweils einen String aus Jahr, Monat und Tag erzeugen und diese dann vergleichen.

BTW: Wirft mal
einen Blick auf die Doku des Konstruktors
https://www.php.net/manual/de/datetime.construct.phperkennt man, dass ein Aufruf ohne Parameter ebenfalls die aktuelle Zeit liefert.
 
Zuletzt bearbeitet:
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…