:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte
Unternehmen im
Anbieterverzeichnis von SELFPHP
:: SELFPHP Forum ::
Fragen rund um die Themen PHP? In über
120.000 Beiträgen finden Sie sicher die passende
Antwort!
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
:: Qozido ::
Die Bilderverwaltung mit Logbuch für
Taucher und Schnorchler.
|
|
Aktuelles Datum in einem Kalender hervorheben (CSS-Layout) |
Beispielaufgabe
Aktuelles Datum soll als Monatsübersicht in einem Kalender hervorgehoben werden.
Beschreibung
Die Funktion calendarControl() erzeugt eine Kalenderdarstellung für den aktuellen Monat und hebt farblich den aktuellen Tag hervor. Bei diesem Kalender wurde vollständig auf Tabellen verzichtet und kann somit über ein Style-Sheet sehr einfach angepasst werden. Weiterhin sind Anpassungen sehr einfach durchzuführen (z.B. Verlinkung des aktuellen Tages zu einer bestimmten Webseite).
<?PHP
function calendarControl() {
/* locale auf Deutsch setzen PHP >= 4.3.0 */
setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'deu_deu');
$currentMonth = date("n");
$currentTime = time();
// Wochentag für den 1. im Monat ermitteln
$firstWeekDay = date ( 'w', mktime ( 0, 0, 0, $currentMonth, 1,
date ( 'Y' ) ) );
// Im Englischen beginnt die Wochenrechnung am Sonntag --> 0
// Daher den Wochenbeginn der nächsten Woche berechnen
$nextWeek = 7 - $firstWeekDay + 2;
// Ausgeschriebener Monat - z.B. Dezember
$year = strftime("%B", $currentTime );
// Abgekürzter Wochentag - z.B. Sa
$day = strftime("%a", $currentTime );
$calendar = "\n";
$calendar .= '<div class="calout">' . "\n";
$calendar .= ' <div class="calcellTop">' . $year . '</div>' . "\n";
// Wochentage generieren
for ( $x = $nextWeek; $x < ($nextWeek + 7); $x++ ){
$day = strftime("%a", mktime ( 0, 0, 0, $currentMonth, $x,
date ( 'Y' ) ) );
$calendar .= ' <div class="calcellday">' . $day . '</div>' . "\n";
}
$iLimit = date ( 't', mktime ( 0, 0, 0, $currentMonth, 1,
date ( 'Y' ) ) );
// Tagesanzeige generieren
for ( $i = 1; $i <= ( $iLimit + $firstWeekDay - 1 ); $i++ ) {
$iDayOfMonth = $i - $firstWeekDay + 1;
if ( $i < $firstWeekDay ) {
// Leerzellen schreiben, bis Monatsanfang
// auf den richtigen Tag der Woche faellt.
$calendar .= ' <div class="calcell"> </div>' . "\n";
}
elseif ( $iDayOfMonth == date ( 'd' )
&& $currentMonth == date( 'n' ) ) {
// Heutigen Tag, hervorheben.
$calendar .= ' <div class="calcellactive">' . $iDayOfMonth . '</div>' . "\n";
}
else {
$calendar .= ' <div class="calcell">' . $iDayOfMonth . '</div>' . "\n";
}
}
$calendar .= '</div>' . "\n";
return $calendar;
}
?>
|
Anwendungsbeispiel
<?PHP
echo calendarControl();
?>
|
Cascading Style Sheets (CSS).calout {
font-family:Tahoma, Geneva, sans-serif;
font-size:10px;
text-align:center;
width:150px;
}
.calcellTop {
float:left;
width:100%;
color:#333399;
font-size:14px;
font-weight:bold;
}
.calcellday {
float:left;
width:14%;
font-weight:bold;
}
.calcell {
float:left;
width:14%;
}
.calcellactive {
float:left;
width:14%;
background-color:#CC0000;
color:#FFFFFF;
}
|
Ausgabebeispiel: BrowseransichtApril Mo Di Mi Do Fr Sa So 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
|
|
|
|
|