Skip to main content

Kalender Widget

Erstelle dynamisches Output mit PHP direkt im HTML
Der Hintergrund

Hier zeigen sich gleich mehrere praktische Eigenschaften von PHP als serverseitige Skriptsprache:

  • PHP kann auf serverseitige Ressourcen zugreifen (hier: die aktuelle Serverzeit) 
  • PHP kann direkt in HTML hineingeschrieben werden, obwohl es vom Parser ausgeführt wird, lange bevor HTML vom Browser gelesen wird (eigentlich überall hin, auch in XML oder JSON oder Plain Text etc.)

Zeit - berechnen und formatieren

Wenn mit Zeit gearbeitet wird, gibt es zwei Situationen, die nicht die gleichen Anfordenungen teilen: die Berechnung von Zeit, bei der auch über den Tag hinaus Stunden, Minuten oder Sekunden hinzgezählt oder weggezählt werden sollen, ohne dass dabei Fehler enstehen, und die "menschenfreundliche" Darstellung in bspw. Tagen, Wochen, Monaten oder Jahren.

Für die Berechnung der Zeit arbeitet man deshalb mit dem Timestamp. Durch die fortlaufende Zählung der Sekunden seit Januar 1970 ist es möglich, mit der Zeit in Sekunden zu rechnen. PHP erzeugt den aktuellen Timestamp mit der Funktion time() - zurück kommt ein Integer (Anzahl Sekunden), z.B. 1710338435 für 13.03.2024 um 15:00h. 

$aktuelleZeit = time();
echo $aktuelleZeit; 

Für die Darstellung der Zeit arbeitet man dafür mit Formatierungsfunktionen wie date() oder date_format(). Hier ist die Frage, ob man als Ausgangslage für die Darstellung eines Datumsstrings einen Timestamp hat, oder ob man von einem Datumsstring ausgeht, der anders formatiert wieder ausgegeben werden soll.

Der Timestamp ist ist für PHP als Ausgangsinformation die einfachere Möglichkeit, da es von einer korrekten Anzahl Sekunden ausgehen kann und diese nur zu formatieren braucht.

$timestamp = 1710338501;
echo date("l, d. M. Y", $timeStamp); // gibt die Zeit des mitgegebenen Timestamps formatiert aus

Wird die aktuelle Zeit ausgegeben, muss übrigens der Timestamp nicht mitgegeben werden, es wird bei Fehlen dieser Angabe automatisch von der Funktion date() ein aktueller Timestamp verwendet (optionaler Parameter):

echo date("l, d. M. Y"); // gibt die aktuelle Zeit formatiert aus

Der Datumsstring benötigt zwei Schritte, da PHP einen Timestamp für die Formatierung benötigt, und diesen zuerst aus dem vorhandenen Datumsstring generieren muss. Diese Methode ist je nach dem Format des ursprünglichen Strings eventuell fehleranfällig - probiere es aus!

$datumsString = "2024-03-11"; ;
$date = date_create( $datumsString );
echo date_format( $date, "l, d. M. Y" ); // Montag, 11. März 2024

So geht's

  1. Lade die Datei kalender-1.zip herunter und öffne das HTML-File darin
  2. Speichere kalender_vorlage.html als kalender_vorlage.php ab, damit Du darin PHP ausführen kannst
  3. Rufe die Datei im Browser auf und betrachte sie: es sind 4 Datumswerte enthalten
  4. Erstelle eine Variable, die den Wochentag enthält mit der Funktion date()
    <?php
    $wochentag = date("l");
    ?>
  5. Gebe die Werte dieser Variablen im bestehenden HTML aus, indem Du jeweils den statischen Wert mit einem PHP echo ersetzst
    <h2>Montag</h2>
    wird zu:
    <h2><?php echo $wochentag; ?></h2>
  6. Verfahre nun genau gleich für den Tag des Monats, Monat und Jahr

Tips und Links

Hier findest du Beschreibungen und Beispiele zur verwendeten Funktion und auch zu Alternativen: 
https://www.w3schools.com/php/func_date_date.asp (wenn man von einem Timestamp ausgeht)
https://www.w3schools.com/php/func_date_date_format.asp (wenn man von einem Datumsstring ausgeht)

Warum ist das Datum Englisch?

Vielleicht ist dir aufgefallen, dass du das Datum nur Englisch ausgeben kannst. Die benutzten Funktionen sind tatsächlich nicht sprachsensibel. Um die lokale Umgebung zu definieren und zu nutzen, muss mit einer Klasse namens IntlDateFormatter gearbeitet werden (dazu später mehr). 

Start

HTML Output steuern

Verstehen, wie PHP mit HTML zusammen funktioniert


Tags
Kategorie