real-insanity
Erfahrenes Mitglied
Nabend liebe Community
Ich hab da ein Problem:
Ich habe mir einen Kalender gebastelt, der sich Timestamps aus einer DB holen soll und diese dann dementsprechend markieren soll. Das markieren an sich klappt, jedoch wird der markierte Tag, beispielsweise wenn ich für heute einen Termin eintrage, der Tag doppelt angezeigt, was nicht sein soll.
Ich kann mir eigentlich nur erklären, dass ich einen Logikfehler in den Schleifen habe.
Aber hier einmal der Code des Kalenders:
Als Anlage habe ich einmal den Kalender angefüht (Screenshot) damit ihr wisst was ich meine.
Die Funktion Convert2Date wandelt einen Timestamp in ein Dataarray um.
Die Funktion GetMySQLData, gibt ein Array mit den Daten in einer Tabelle aus.
Vllt findet einer von euch den Fehler.
MfG
Ich hab da ein Problem:
Ich habe mir einen Kalender gebastelt, der sich Timestamps aus einer DB holen soll und diese dann dementsprechend markieren soll. Das markieren an sich klappt, jedoch wird der markierte Tag, beispielsweise wenn ich für heute einen Termin eintrage, der Tag doppelt angezeigt, was nicht sein soll.
Ich kann mir eigentlich nur erklären, dass ich einen Logikfehler in den Schleifen habe.
Aber hier einmal der Code des Kalenders:
PHP:
<?php
$date = getdate();
$currentmonth = $date[mon];
$year = $date[year];
?>
<table width="100%" border="0" class="calendar">
<tr>
<th colspan="7"><?php echo $months[$currentmonth]. " " . $year; ?></th>
</tr>
<tr>
<th>Mo</th>
<th>Di</th>
<th>Mi</th>
<th>Do</th>
<th>Fr</th>
<th>Sa</th>
<th>So</th>
</tr>
<tr>
<?php
$datum = Convert2Date(time());
$result = GetMySQLData("SELECT * FROM appointment WHERE Oeffentlich = 1");
$termine = array();
$today = $datum[0];
$firstofmonth = mktime(0, 0, 0, date("m"), 1, date("Y"));
$offset = (date('w', $firstofmonth) -1) % 7;
$dayspermonth = date("t");
$appointment = Convert2Date("1210261832");
for($i = 0; $i < $offset; $i++)
echo '<td></td>';
while ( $row = mysql_fetch_assoc ( $result ) )
{
$termine[] = Convert2Date ( $row [ 'Datum' ] );
}
for($i=1; $i <= $dayspermonth; $i++)
{
foreach ($termine as $termin)
{
if ($i == $termin[0])
{
if($i % 7 == 7 - $offset)
{
echo '<td class="appointmentonsunday">'.$i.'</td>';
$AppointmentSet = true;
}
else
{
echo '<td class="appointment"> </td>';
$AppointmentSet = true;
}
}
}
if($i == $today)
{
if($i % 7 == 7 - $offset)
{
echo '<td class="todayissunday">'.$i.'</td>';
}
else
{
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>';
}
}
?>
</table>
Als Anlage habe ich einmal den Kalender angefüht (Screenshot) damit ihr wisst was ich meine.
Die Funktion Convert2Date wandelt einen Timestamp in ein Dataarray um.
Die Funktion GetMySQLData, gibt ein Array mit den Daten in einer Tabelle aus.
Vllt findet einer von euch den Fehler.
MfG