Der aktuelle Monatskalender für die Sidebar
| Mai | |||||||
|---|---|---|---|---|---|---|---|
| KW | Mo | Di | Mi | Do | Fr | Sa | So |
| 18 | 1 | 2 | 3 | 4 | 5 | 6 | |
| 19 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 20 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 22 | 28 | 29 | 30 | 31 | |||
Dieses Script gibt den aktuellen Monat in Tabellenform aus.
Eigenschaften:
- aktueller Monat
- mit Kalenderwochen-Anzeige
- Kalenderwochen, Samstage und Sonntage in unterschiedlichen Farben
- aktuelles Datum ist orange umrandet
Und hier ist der PHP-Code:
<?php
setlocale(LC_TIME, 'de_DE'); //Datum-Zeitangaben auf "deutsch" setzen
define ('CR', chr(13).chr(10)); //CR mit [CR][LF] definieren
define ('LZ', ' '); //Zeileneinschub definieren
$jahr = strftime("%Y"); //aktuelles Jahr ermitteln
$monat = strftime("%B", time()); //aktuellen Monat ermitteln
$monat_dez = strftime("%m", time()); //aktuellen Monat ermitteln
$zeitstempel = mktime(2,0,0,$monat_dez,1,$jahr);
monatskalender = '<div class="kalender">'.CR;
$tag_der_woche = strftime("%u", $zeitstempel); //für die generierung von Leerzellen zu Beginn eines Monats
//Tabellenkopf mit Monat, KW und Wochentagen erstellen
$monatskalender .= '<table cellspacing="0">'.CR;
$monatskalender .= '<thead>'.CR;
$monatskalender .= LZ.'<tr class="monat"><th colspan="8">'.$monat.'</th></tr>'.CR;
$monatskalender .= LZ.'<tr class="wochentag"><th>KW</th><th>Mo</th><th>Di</th><th>Mi</th><th>Do</th><th>Fr</th><th>Sa</th><th>So</th></tr>'.CR;
$monatskalender .= '</thead>'.CR ;
//Ende des Tabellenkopfes
while ($monat == strftime("%B", $zeitstempel)) { //Schleife wird so lange durchlaufen, bis sich der Monat ändert
$aktuelle_kw = strftime("%V", $zeitstempel);
$monatskalender .= '<tr>'.CR.LZ.'<td class="kw">'.$aktuelle_kw.'</td>' ;
if ($tag_der_woche > 1 && strftime("%e", $zeitstempel) == 1) {
for ($i = $tag_der_woche; $i > 1; $i--) {
$monatskalender .= '<td></td>';
}
}
while ($aktuelle_kw == strftime("%V", $zeitstempel)) { //Schleife wird so lange durchlaufen, bis sich die KW ändert
if (strftime("%u", $zeitstempel) == 6) $temp_klasse1 = 'samstag';
elseif (strftime("%u", $zeitstempel) == 7) $temp_klasse1 = 'sonntag';
else $temp_klasse1 = '';
if (strftime("%d.%m", $zeitstempel) == strftime("%d.%m")) $temp_klasse2 ='heute';
else $temp_klasse2 ='';
$klasse = ' class="'.$temp_klasse1.' '.$temp_klasse2.'"';
$monatskalender .= '<td '.$klasse.'>'.strftime("%e", $zeitstempel).'</td>';
$zeitstempel = $zeitstempel + 86400 ;
if (strftime("%e", $zeitstempel) == 1) break; //Abbruch, wenn sich wärend der Woche der Monat ändert
}
$monatskalender .= '</tr>'.CR ;
}
$monatskalender .= '</table>'.CR ;
$monatskalender .= '</div>'.CR ;
echo $monatskalender;
?>
Für die Formatierung (siehe die Darstellung oben) verwende ich dieses CSS:
table {
text-align: center;
border: 2px solid #808080;
float: right;
margin:1.5em 0.5em 0 0.5em;
}
th, td {
margin: 0px;
padding: 3px;
}
tr.monat th{
color: #212f6e;
background: #909090;
padding:0px;
}
tr.wochentag th{
color: #e1e1e1;
background: #808080;
font-weight: normal;
}
td.samstag {
color: #a05050;
font-weight: bold;
}
td.sonntag {
color: #ac000a;
font-weight: bold;
}
td.kw {
color: #666;
font-weight: bold;
}
td.heute {
border: 2px solid #ff8000;
}
.kalender {
line-height: 1em;
}
Viel Spaß mit diesem Script
Peter
