php-script für Öffnungszeiten?
Hallo,
ich möchte gerne ein php script erstellen womit die aktuellen Öffnungszeiten des Parks angezeigt werden. Allerdings gehen meine Öffnungszeiten nicht nach Wochentag, sondern nach Datum. So habe ich zum Beispiel von 17 März - 19 April von 16 - 20 Uhr geöffnet, vom 20 April bis 16 August von 14 - 20 Uhr und vom 17 August bis 16 März von 17 - 20 Uhr. Kann man dafür ein script erstellen damit es immer die aktuellen Öffnungszeiten anzeigt?
Viele Grüße
Niklas
3 Antworten
Ja das geht. Es gibt eine PHP Funktion um das Datum abzufragen.
https://www.php.net/manual/de/function.date.php
Auf Basis des Datums kannst du dann eine Abfrage machen um die richtigen/aktuellen Öffnungszeiten zu ermitteln und auszugeben.
Man könnte es z.B. so in der Art realisieren:
<?php
$date = date("md"); //Datum als Monat Tag
if($date >= "0101" && $date <= "0316") { //Zwischen 01. Jan und 16. März
echo "Öffnungszeiten: 17 - 20 Uhr";
}elseif($date >= "0317" && $date <= "0419"){ //Zwischen 17. März und 19. Aptil
echo "Öffnungszeiten: 16 - 20 Uhr";
}elseif($date >= "0420" && $date <= "0816"){ //Zwischen 19. Aptil und 16. Aug
echo "Öffnungszeiten: 14 - 20 Uhr";
}elseif($date >= "0817" && $date <= "1231"){ //Zwischen 17. Aug und 31. Dez
echo "Öffnungszeiten: 17 - 20 Uhr";
}
?>
Vielen Dank! Kann man noch Funktionen hinzufügen, das es Beispiel zwischen 17. März und 19. April Montags immer geschlossen ist anzeigt?
Ja da wo das echo mit der Öffnungszeit ist könnte man z.B. eine weitere if Abfrage zum Wochentag machen.
ist Montag dann geschlossen sonst Öffnungszeit anzeigen.
Oder du schreibst einfach dazu, "Montags geschlossen" oder "Öffnungszeiten: Von Dinstags bis Freitags 16 - 20 Uhr".
Und wie würde der script mit der ersten Möglichkeit aussehen? ;)
Wie du es auf der verlinkten Seite nachlesen kannst, kann man den Wochentag zum einen über date("D") oder date("l") als Wort auslesen oder als Zahl per date("w") oder date("l").
Die if Abfrage "ist Montag dann geschlossen sonst Öffnungszeit anzeigen" könnte also z.B. so aussehen:
//Variante 1
if(date("D") == "Mon") {
echo "Heute haben wir geschlossen";
}else{
echo "Heutige Öffnungszeiten: 16 - 20 Uhr";
}
//Vatiante 2
if(date("w") == 1) { // 1 = Montag
echo "Heute haben wir geschlossen";
}else{
echo "Heutige Öffnungszeiten: 16 - 20 Uhr";
}
Vielen Dank! Ist es noch möglich das es zum Beispiel ab 20 Uhr bis 16 Uhr den Text "Aktuell haben wir geschlossen" angezeigt wird?
Ja ist möglich.
date("G") gibt die Stunde im 24-Stunden-Format aus.
Die Folgende Abfrage prüft also ob die aktuelle Stunde größer oder gleich 16 ist, also ob es mindestens 16 Uhr ist
UND
ob die die aktuelle Stunde kleiner als 20 ist.
if(date("G") >= 16 && date("G") < 20) {
echo "Geöffnet";
}else {
echo "Aktuell haben wir geschlossen";
}
//Variante 2 negieren der Abfrage
if(!(date("G") >= 16 && date("G") < 20)) {
echo "Aktuell haben wir geschlossen";
}else {
echo "Geöffnet";
}
Wenn sich jemand auf der Webseite über die Öffnungszeiten informieren möchte, sollten dieser Person aber auch die Öffnungszeiten angezeigt werden, wenn geschlossen ist.
Schau mal hier, wie man mit date auch den Wochentag auslesen kann:
https://www.php.net/manual/de/function.date.php
Zwar numerisch aber mit switch und case kann man da ja die entsprechenden Bezeichnungen zuordnen (oder mit if, wenn man sich nicht lange damit beschäftigen will).
Vielen Dank! Kannst du mir mal ein Beispiel-Script zeigen? :)
da ich auf diesem Rechner noch nicht XAMPP installiert habe, hab ich bis nach dem Wochenende keine Entwicklungsumgebung zur Verfügung und kann nicht schnell was passendes basteln. Aber das kriegst Du schon hin. Es ist nicht wirklich schwer.
Ja das geht. Du musst nur das Datum abfragen.
Vielen Dank! Kannst du mir mal ein Beispiel-Script zeigen? :)