Version: 2.9.0

Advendskalender

  • Autor: "Jürgen Leidig"
  • Erstellt am: "11.12.2010"

Der einfachste Weg einen Advendskalender zu erstellen, wäre einfach 25 HTML-Dokumente zu erstellen und diese dann zu verlinken. Doch bei so einem Kalender könnte man bescheißen.

Anforderungen

Was soll unser Advendskalender können?

  • Das aktuelle Türchen öffnen
  • Die vergangenen Türchen öffnen
  • Die Türchen nur Dezember öffnen
  • Eine Meldung wenn man ein Türchen zu früh öffnen will

Umsetzung

Als erstes erstellen wir und eine PHP-Datei. Der Name dieser Datei ist egal. Im weiteren Verlauf wird diese Datei als Hauptdatei bezeichnet. In diese Datei schreiben wir nun folgenden Code:

<?php
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de-DE" lang="de-DE">
	<head>
		<title>Advendskalender</title>
		<link rel="stylesheet" type="text/css" href="/kalender.css" />
	</head>
	<body>
		<div class="content">
	
		</div>
	</body>
</html>

Die Datei kalender.css enthält die Angaben, wie der Kalender aussehen soll. Für die Funktion spielt sie keine Rolle.

Als erstes braucht man das Aktuelle Datum. Wir schreiben diese in 2 Vraiablen $tag und $monat. Um ein Datum ermitteln zu können, brauchen wir als erstes den Sogenannten Timestamp. Hierfür; schreiben wir $timestamp = time(); in den PHP-Bereich. Den Tag ermitteln wir mit $tag = date("j", $timestamp); und den Monat mit $monat = date("n", $timestamp);. "j" liefert uns den Tag ohne fürende 0. "n" macht das selbe mit dem Monat.

Jetzt wissen wir zwar schon, welcher Tag ist, aber uns fehlt noch der Kalender selbst. Dafür legen wir die Datei kalender.php an und fügen folgenden Inhalt ein:

<table>
	<tr>
		<td><a href="/?d=9">9</a></td>
		<td><a href="/?d=15">15</a></td>
		<td><a href="/?d=4">4</a></td>
		<td><a href="/?d=13">13</a></td>
		<td><a href="/?d=1">1</a></td>
		<td><a href="/?d=5">5</a></td>
	</tr>
	<tr>
		<td><a href="/?d=17">17</a></td>
		<td><a href="/?d=18">18</a></td>
		<td><a href="/?d=20">20</a></td>
		<td><a href="/?d=16">16</a></td>
		<td><a href="/?d=10">10</a></td>
		<td><a href="/?d=14">14</a></td>
	</tr>
	<tr>
		<td><a href="/?d=11">11</a></td>
		<td><a href="/?d=2">2</a></td>
		<td><a href="/?d=22">22</a></td>
		<td><a href="/?d=24">24</a></td>
		<td><a href="/?d=21">21</a></td>
		<td><a href="/?d=3">3</a></td>
	</tr>
	<tr>
		<td><a href="/?d=23">23</a></td>
		<td><a href="/?d=19">19</a></td>
		<td><a href="/?d=6">6</a></td>
		<td><a href="/?d=12">12</a></td>
		<td><a href="/?d=7">7</a></td>
		<td><a href="/?d=8">8</a></td>
	</tr>
<table>

Die Datei enthält eine Tabelle mit 24 Feldern die in belibiger Anordnung die Zahlen von 1-24 enthält. Die Zahlen sind jeweils mit <a href="/?d=zahl"> verlinkt. Hier verweisen wir wieder auf die Ursprungsdatei und übergeben dabei die Jeweilige Zahl, in unserem Fall also das Türchen, das geöffnet werden soll. Damit wir die Angaben auch benutzen können, müssen wir in erste Zeile des oberen PHP-Blocks unserer Hauptdatei $tuer = $_GET['d']; einfügen.

Bis jetzt wird noch nichts angezeigt, wenn wir unsere Hauptdatei aufrufen. Damit sich das ändert, fügen wir hinter <div class="content"> <?php include($content);?> ein. Welcher Content wann angezeigt wird (Kalender oder Türinhalt) schreiben wir in den oberen PHP-Bereich:

if(!empty($tuer)) {
	if($tuer <= $tag && $monat == "12") {
		$content = $tuer.".php";
	} else {
		$content = "frueh.php";
	}
} else {
	$content = "kalender.php";
}

Das sind 2 Schleifen. Die erste if(!empty($tuer)) Prüft, ob die Variable $tuer leer ist, wobei !empty für "nicht leer" bedeutet. Wenn die Variable leer ist tritt der else-Fall ein, also wird der Kalender angezeigt. Wenn sie nicht leer ist, wird die zweite Schleife abgefragt. In der zweiten Schleife müssen zwei Bedingungen erfüllt werden. && steht für UND. <= steht für kleiner/gleich.== steht für IST GLEICH. Also wenn der Wert der angeklickten Tür kleiner oder gleich dem aktuellem Tag ist UND der 12te Monat ist (sprich Dezember) dann wird das angeklickte Türchen geöffnet, andernfalls wird die Datei frueh.php angezeigt.

So der Inhalt der Türchen wird in den Dateien 1.php - 24.php gespeichert. Die müssen noch erstellt und mit Inhalt gefüllt werden. Die Datei frueh.php muss auch noch erstellt werden. Darin speichern wir folgenden Inhlat:

<p>Bist du nicht ein bischen zu fr&uuml;h dran? Heute ist erst der 
<?php echo $tag.". ".$monate[$monat-1]?> und du willst schon das 
<?php echo $tuer?>te T&uuml;rchen aufmachen!</p>
<p><a href="/?">zur&uuml;ck</a></p>

Jetzt fehlt noch die Variable $monate. Die setezen wir in de Hauptdatei im oberen PHP-Bereich. $monate = array("Januar","Februar","März","April","Mai","Juni", "Juli","August","September","Oktober","November","Dezember");. Jetzt haben wir folgendes Problem: Dezember wird mit $monate[11] aufgerufen, da bei 0 angefangen wird zu Zählen. Bei date("n", $timestamp) wird der Dezember als 12 ausgegeben. Deshalb schreiben wir $monate[$monat-1].

Hier der fertige Code der Hauptdatei:

<?php
	$tuer = $_GET['d'];
	$timestamp = time();
	$tag = date("j", $timestamp);
	$monat = date("n", $timestamp);
	$monate = array("Januar","Februar","März","April","Mai","Juni","Juli",
	"August","September","Oktober","November","Dezember");
	if(!empty($tuer)) {
		if($tuer <= $tag && $monat == "12") {
			$content = $tuer.".php";
		} else {
			$content = "frueh.php";
		}
	} else {
		$content = "kalender.php";
	}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de-DE" lang="de-DE">
	<head>
		<title>Advendskalender</title>
		<link rel="stylesheet" type="text/css" href="/kalender.css" />
	</head>
	<body>
		<div class="content">
			<?php include($content);?>
		</div>
	</body>
</html>

So sieht der Fertige Kalender aus