Geschrieben von ultra-noobi am 01.09.2005, 12:12

Monatskalender mit PHP
Möchten Sie auf Ihrer Webseite eine Übersicht über die Tage des aktuellen Monats anzeigen, finden Sie hier das passende PHP-Script dazu.

Sie können das nachstehende Script ohne jegliche Veränderung an der Stelle Ihrer Webseite einfügen, wo der Monatskalender erscheinen soll. Es zeigt jederzeit die Tage des aktuellen Monats.

1<?php
2 if(date(w, mktime(0, 0, 0, date(n), 1, date(Y)))==1 && date(t)==28)
3 {
4 $AnzahlDerZeilen=4;
5 }
6 elseif(((date(w, mktime(0, 0, 0, date(n), 1, date(Y)))==6 || date(w, mktime(0, 0, 0, date(n), 1, date(Y)))==0) && date(t)==31) || (date(w, mktime(0, 0, 0, date(n), 1, date(Y)))==0 && date(t)==30))
7 {
8 $AnzahlDerZeilen=6;
9 }
10 else
11 {
12 $AnzahlDerZeilen=5;
13 }
14 ?>
15 <table border="1" bordercolor="darkgray" cellpadding="2" cellspacing="0">
16 <tr>
17 <td align="center" colspan="7"><?php echo date("n.Y"); ?></td>
18 </tr>
19 <tr>
20 <td width="25">Mo</td>
21 <td width="25">Di</td>
22 <td width="25">Mi</td>
23 <td width="25">Do</td>
24 <td width="25">Fr</td>
25 <td width="25">Sa</td>
26 <td width="25">So</td>
27 </tr>
28 <?php
29 $k=0;
30 for($i=1; $i<=$AnzahlDerZeilen; $i++)
31 {
32 ?>
33 <tr>
34 <?php
35 for($j=1; $j<=7; $j++)
36 {
37 if(date(w, mktime(0, 0, 0, date(n), 1, date(Y)))==0)
38 {
39 $m = 7;
40 }
41 else
42 {
43 $m = date(w, mktime(0, 0, 0, date(n), 1, date(Y)));
44 }
45 if($m==$j && $j<=7 && $k==0)
46 {
47 $k=1;
48 }
49 ?>
50 <td align="right"><?php
51 if($k!=0 && $k<=date(t))
52 {
53 echo$k;
54 }
55 else
56 {
57 echo"&nbsp;";
58 }
59 if($k!=0)
60 {
61 $k++;
62 }
63 ?></td>
64 <?php
65 }
66 ?>
67 </tr>
68 <?php
69 }
70 ?>
71 </tr>
72 </table>

Zu Beginn des Scriptes wird bestimmt, aus wie vielen Zeilen der Kalender für den aktuellen Monat bestehen wird. Dabei werden drei Fälle unterschieden:
4 Zeilen:
Dieser recht seltene Fall tritt auf, wenn der erste Tag eines Monats ein Montag ist (date(w, mktime(0, 0, 0, date(n), 1, date(Y)))) und der Monat zudem nur 28 Tage besitzt (date(t)==28).
6 Zeilen:
Hier werden zwei Fälle unterschieden: Der Monat beginnt mit einem Samstag oder Sonntag und ist 31 Tage lang. Im zweiten Fall hat der Monat 30 Tage und beginnt mit einem Sonntag. In beiden Fällen werden für die korrekte Darstellung des Kalenders 6 Zeilen benötigt.
5 Zeilen:
Trifft keine der vorgenannten Bedingungen zu, besteht der Monatskalender zwangsläufig aus 5 Zeilen.
Im Anschluss an die Bestimmung der Anzahl der Zeilen erfolgt die Ausgabe des Kalenders mit Hilfe zweier ineinander geschachtelter Schleifen. Die erste Schleife erzeugt die entsprechende Anzahl Zeilen, die zweite die jeweiligen Spalten für die Wochentage.

Damit nicht jeder Monat mit einem Montag beginnt, beginnt die Hilfsvariable $k erst dann zu zählen, wenn die Variable $m (enthält den ersten Wochentag eines Monats als Zahl von 1 bis 7) gleich der Variablen $j (zuständig für die Wochentage) ist.

Bewertung Anzahl
5
85,7 %
6 Bewertungen
4
14,3 %
1 Bewertungen