Der aktuelle Monatskalender für die Sidebar

September
KWMoDiMiDoFrSaSo
35 1 2 3
36 4 5 6 7 8 910
3711121314151617
3818192021222324
39252627282930

Dieses Script gibt den aktuellen Monat in Tabellenform aus.

Eigenschaften:

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 && 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