PHP: Monatskalender (per Table)

8 Oktober 2009 in Code Snippets, PHP Kommentieren »

In diesem kleinen Beispiel geht es um die Ausgabe aller Tage eines Monats als Kalenderansicht in einer Tabelle. Die spätere Ausgabe würde wie folgt aussehen:

Monatskalender

Der Funktion kann optional ein bestimmter Monat mit Jahresangabe als Parameter übergeben werden, sonst wird der aktuelle Monat dargestellt:

<?php

// Kalender eines Monats erzeugen (per Table)
function show_calendar($month 0$year 0) {
  
// Timestamp für den gewählten Monat erzeugen, falls kein Datum angegeben wurde,
  // dann das aktuelle nehmen.
  
$month_timestamp = ($month == time() : mktime(1200$month1$year));

  
// Kopf der Tabelle
  
$output '<table style="text-align:center">'
          
'<tr style="font-weight:bold">'
          
'<td>Mo</td><td>Di</td><td>Mi</td><td>Do</td><td>Fr</td>'
          
'<td>Sa</td><td>So</td>'
          
'</tr>'
          
'<tr>';

  
// Ersten Wochentag des Monats ermitteln und bis dahin Leerzellen hinzufügen
  
$first_day date('w'$month_timestamp);
  
$fill_count = ($first_day == $first_day 1);
  
$output .= str_repeat('<td>&nbsp;</td>'$fill_count);

  
// Monatstage auflisten
  
$day_count date('t'$month_timestamp);
  for (
$i 1$i <= $day_count$i++) {
    
// Tageszelle einfügen
    
$output .= '<td>' $i '</td>';

    
// Neue Zeile nach 7 Spalten
    
if (++$fill_count == 0) {
      
$output .= '</tr><tr>';
    }
  }

  
// Letzte Reihe mit Leerzellen auffüllen
  
while ($fill_count++ % != 0) {
    
$output .= '<td>&nbsp;</td>';
  }

  
// Tabelle schließen
  
$output .= '</tr>'
           
'</table>';

  
// Kalender zurückgeben
  
return $output;
}

?>

Aufgerufen werden kann die Funktion wie folgt:

<?php

// Beispielaufruf 1: Aktueller Monat
echo show_calendar();

// Beispielaufruf 2: Vorgegebener Monat
echo show_calendar(12009)

?>

Einen Kommentar hinterlassen