Abgelaufene Ternine ausblenden
Problem:
Termine die schon abgelaufen sind, stehen noch auf der Homepage und man hat auch nicht immmer die Zeit (oder Lust) alle Termine durchzusehen und die betreffenden zu löschen.
Lösung:
Ein PHP-Script muß her das die Termine mit dem aktuellen (Server-) Datum vergleicht und die jenigen die abgelaufen sind ausblendet.
Leider merkte ich, und raufte mir die Haare, das der 16.07.2016 für PHP aktueller ist als der 08.01.2017. Aber die Lösung fand ich (Link am Ende des Tutorials).
Um zwei Datumsangaben zu vergleichen muß man diese erst mal in eine Zahl umwandeln. Dies macht man mit der PHP-Funktion "strtotime". Diese wandelt das Datum oder die Variable welche man in eine Klammer dahinter setzt in eine Zahl um (Anzahle der Sek. nach den 01.01.1970). So, nun hat man zwei Zahlen die sich vom "dummen" PHP vergleichen lassen und bekommt so auch das richtige Ergebnis beim Datumsvergleich.
So, das Resultat war folgendes Script das ich euch Zeile für Zeile erklären werde.
<html> <head> <title>PHP-Termine ausblenden</title> <style> .termin { position:relative; width: 80vw; height:4em; font-family: 'Open Sans', sans-serif; border: 1px solid; padding: 2em; } </style> </head> <body> <?php $datum = date("d.m.Y"); $datumstamp=strtotime($datum); //echo $datum; //echo $datumstamp ?> <div class="termin" <?php $event="16.07.2017"; if (strtotime($event)<$datumstamp) {echo 'style="display:none;"';}?>><p>Inhalt d. Terminbeschreibung</p> </div> <?php // echo strtotime($event); ?> </body> </html>
Zeile 1-15: HTML-Head und Formatierung.
Zeile 16: Hier fängt PHP an.
Zeile 17: Hier wird mit dem Befehl date("d.m.Y") das (Server-) Datum abgefragt und formatiert in z. B. 09.01.2017 und als Variable $datum gespeichert.
Zeile 18: Hier wird diese Variable umgewandelt in eine Nummer und diese abgespeichert in der Variablen $datumstamp (s. o.).
Zeile 19-20: Hier sind auskommentierte echos zur überprüfung der Operation.
Zeile 21: PHP-Ende.
Zeile 22: Hier wird eine Div erstellt mit der Klasse .termin und PHP erneut eröffnet. In der Variablen $event gibt man das Termindatum ein. Jetzt wird in einer IF-Funktion erstmal das Event-Datum auch in eine Zahl umgewandelt und anschließend mit der Zahl die in der Variablen $datumstamp hinterlegt ist, verglichen. Wenn die Zahl des Termindatums kleiner ist als die Zahl die aus dem (Server-) Datum ermittelt wurde, wird in das Div das style-Element "display:none" eingefügt. D. h. der Termin ist älter als das aktuelle Datum und der Termin wird ausgeblendet.
Zeile 23: Div wird geschlossen.
Zeile 24-26: Auskommentiertes echo der Event-Zahl.
Zeile 27 - 28: BODY und HTML wird geschlossen.