Falsche Anzeige im Kalender

Nabend Leute :)

Ich habe mal wieder ne Frage. Ich bin momentan dabei nen Kalender zu basteln für meine HP wo auch events reinkommen sollen.

Das habe ich bisher:
PHP:
<table width="100%" border="1">
	<tr>
		<th>Mo</th>
		<th>Di</th>
		<th>Mi</th>
		<th>Do</th>
		<th>Fr</th>
		<th>Sa</th>
		<th>So</th>
	</tr>
	<tr>
		<?
			//echo $tage[$heutetag]."<br>";
			$dayspermonth 	= date("t");
			for($i=1;$i<=$dayspermonth;$i++)
			{
				if($i%7==0){
				?>
					<td ><? echo $i; ?></td></tr>
				<?}
				else
					echo "<td>".$i."</td>";
			}
		?>
</table>

Mein problem ist es nun, dass die Tage nicht zu den Daten stimmen und der erste im Monat nicht immer ein Montag ist. Wie kann ich das programmieren ich hab da denke ich i-wie einen Denkfehler, denn ich komme nicht weiter... :(
 
Entweder indem du den Wochentag auch dynamisch aus dem Datum generierst (z.B. mit der Funktion date()) oder indem du die Ausgabe der Tage um ein dynamisches Offset verschiebst, so dass sie wieder zu den Wochentagen passen.

Die Funktion date() sollte dir helfen, den Wochentag zu einem Zeitstempel zu berechnen (eine kurze Modulo-Rechnung würde es aber auch tun).

mfg, metax.
 
Also ich habe schon hier mit rumgespielt:
PHP:
$heutetag = date("w");

Damit bekomme ich ja die Nummer des heutigen Datums angenommen 25.
So und wie kann ich dasmit dem offset machen ôo? Also ich bin grad ziemlich verwirrt xD
Wäre nett wenn du kurz nen kleines sample bauen könntest.
 
Ich dachte an sowas:

PHP:
<table width="100%" border="1">
    <tr>
        <th>Mo</th>
        <th>Di</th>
        <th>Mi</th>
        <th>Do</th>
        <th>Fr</th>
        <th>Sa</th>
        <th>So</th>
    </tr>
    <tr>
        <?
            $anfangmonat = mktime(0, 0, 0, date("m"), 1, date("Y"));
            $ueberspringen = (date('w', $anfangmonat) -1) % 7;
            for($i = 0; $i < $ueberspringen; $i++) {
                echo '<td></td>';
            }
            $dayspermonth = date("t");
            for($i=1;$i<=$dayspermonth;$i++)
            {
                echo '<td>'.$i.'</td>';

                if( (($i + $ueberspringen) % 7 == 0) && ($i + 1 <= $dayspermonth)){
                    echo '</tr><tr>';
                }
            }
        ?>
</table>

mfg, metax.
 
Danke :)

Hab das mal ein bisschen ausgebaut:
PHP:
<?
			$datum			= Convert2Date(time());
            $today			= $datum[0];
			$appointment	= Convert2Date("1208304000");
			
            $firstofmonth 	= mktime(0, 0, 0, date("m"), 1, date("Y"));
            $offset 		= (date('w', $firstofmonth) -1) % 7;
			
            for($i = 0; $i < $offset; $i++) {
                echo '<td></td>';
            }
            $dayspermonth = date("t");
            for($i=1; $i <= $dayspermonth; $i++)
            {
				if($i == $appointment[0])
					echo '<td class="appointment">'.$i.'</td>';
				elseif($i == $today)
					echo '<td class="today">'.$i.'</td>';
				elseif($i % 7 == 7 - $offset)
					echo '<td class="sunday">'.$i.'</td>';
				else
					echo '<td>'.$i.'</td>';
                
				if( (($i + $offset) % 7 == 0) && ($i + 1 <= $dayspermonth)){
                    echo '</tr><tr>';
                }
            }
        ?>

$appointment[0] wird durch nen Timestamp aus der DB ersetzt. Sprich ich bau da noch ne MySQL-Anbindung dran.
 
Zurück
Oben