Kalender selbst programmieren

QUEST08

Erfahrenes Mitglied
Hallo liebe PHPler,

ich würde gerne einen Kalender selbst erstellen. Ersteinmal geht es mir nur um den aktuellen Monat. So soll es aussehen:

MO DI MI DO FR SA SO
01 02 03 04 05 06
07 08 09 10 11 12 13 usw...

So, ich habe den Tag, der der 1. im Monat ist, für August also "Samstag". Diesen habe ich mir berechnet bzw. ausgelesen. Wie bringe ich es nun hin, das mein Kalender (Tabelle) so erstellt wird, dass der 1. auch ein Samstag und nicht ein Montag ist.

Ich weiß, dass es in einer Schleife sein muss. Aber irgendwie habe ich da seit Tagen kein Ansatz wie ich das genau lösen kann. Weiß jemand mehr?

Liebe Grüße,
QUEST08
 
Mit der date()-Funktion kannst du dir den Wochentag eines beliebigen Datums berechnen lassen. Von diesem ausgehend kannst du dann die einzelnen Tage des Monats in deinem Kalender verteilen.
 
hi,

ja das weiß ich wie ich ein bestimmtes datum auszulesen ist. wie jedoch setzte ich z.b. den 01. auf einen bestimmten tag? hast du da ein schnipsel für mich?

Ich vermute ja ganz arg, dass das in einer schleife geht, aber wie genau weiß ich leider nicht.

Liebe Grüße,
QUEST08
 
Du musst das etwas anders angehen. Da du ja eine Tabelle aufbaust, musst du die Struktur der Tabelle als Basis nehmen und je nach Zelle das jeweilige Datum einsetzen und nicht umgekehrt.
Hier ein Beispiel:
PHP:
$first = strtotime('1st July');
echo '<table border="1">';
echo '<tr><th>Mo</th><th>Di</th><th>Mi</th><th>Do</th><th>Fr</th><th>Sa</th><th>So</th></tr>', "\n";
echo '<tr>';
$i = 0;                                   // Zähler für Zellen
$j = -((date('w', $first) + 6) % 7) + 1;  // Zähler für Tage des Monats

// leere Zellen bis zum 1.
while ($j < 1) {
	echo '<td>-</td>';
	$i++;
	$j++;
}

// 1. bis n. des Monats
for ($n=date('t', $first); $j<=$n; $j++) {
	if ($i % 7 == 0) {
		echo '<tr>';
	}
	echo '<td>'.$j.'</td>';
	if ($i+1 % 7 == 0) {
		echo '</tr>', "\n";
	}
	$i++;
}

// leere Zellen bis zum Ende der Zeile
while ($i % 7 != 0) {
	echo '<td>-</td>';
	$i++;
}

echo '</tr>';
echo '</table>';
 
Zurück