Hallo!
Ich habe einen kleinen Eventkalender in PHP erstellt, der alle Tage, an denen ein Event stattfindet, rot markiert.
Durch Anklicken werden die Events des jeweiligen Tages aufgelistet.
Mein Problem ist jetzt: er zeigt bzw. markiert nur einen einzigen Tag pro Monat, obwohl es viel mehr Events gibt.
Kann den Fehler in meinem Script einfach nicht finden.
Möglicherweise liegt es an "in_array"?
Wäre echt super wenn mir da jemand weiterhelfen könnte!
Ich habe einen kleinen Eventkalender in PHP erstellt, der alle Tage, an denen ein Event stattfindet, rot markiert.
Durch Anklicken werden die Events des jeweiligen Tages aufgelistet.
Mein Problem ist jetzt: er zeigt bzw. markiert nur einen einzigen Tag pro Monat, obwohl es viel mehr Events gibt.
Kann den Fehler in meinem Script einfach nicht finden.
Möglicherweise liegt es an "in_array"?
Wäre echt super wenn mir da jemand weiterhelfen könnte!
PHP-Code:
<?php
/
// Zellen für ein Kalendermonat 6 Zeilen mit 7 Zellen (insgesamt 42)
define ("kalender_faecher", "42");
// DATUM SETZEN - wenn noch kein Pfeil gedrückt wurde, dann wird das Systemdatum
// verwendet. Ansonsten wird das Jahr um 1 hinauf oder 1 hinunter gesetzt.
if (!isset($_GET[pfeil]))
{
// wenn ein Tag angeklickt wird, der nicht in dem aktuellen Monat ist,
// wird das jeweilige Monat übergeben
if (isset ($_GET[monat]))
{
$jahr=$_GET[jahr];
$monat=$_GET[monat];
}
else {$datum = getdate();
$monat = $datum["mon"];
$jahr = $datum["year"];
}
}
else{
$jahr = $_GET[jahr];
if($_GET[pfeil]=="zurueck")
{$monat = $_GET[monat];
$monat = $monat - 1;
}
else
{
$monat = $_GET[monat];
$monat = $monat + 1;
}
}
// ZUERUECK - VOR - Sprung aufs vorige oder aufs nächste Jahr
if ($monat>12) {
$monat=1;
$jahr=$jahr+1;
}
if ($monat<1) {
$monat=12;
$jahr=$jahr-1;
}
// Berechnung von Monat und Jahr davor
$monat_davor = $monat - 1;
$jahr_davor = $jahr -1;
$tage_pro_monat = cal_days_in_month(CAL_GREGORIAN, $monat,$jahr);
//bei der if Schleife wird auch geprüft, ob der Vormonat in einem anderen Jahr liegt
if ($monat_davor == "0" )
{
$tage_monat_davor = cal_days_in_month(CAL_GREGORIAN, 12,$jahr_davor);
}else
{
$tage_monat_davor = cal_days_in_month(CAL_GREGORIAN, $monat_davor,$jahr);
}//else ende
$anfangstag = date('w', mktime (0,0,0,$monat,1,$jahr)); //Gibt den Wochentag als Zahl aus (0=Sonntag usw)
$aktueller_monat = date("F");
/*Die Lücken vor Beginn den gewählten Monats werden aufgefüllt (mit den Tagen des Monats davor)
es muss +1 sein, weil die Wochentage von 0 bis 6 gezählt werden */
$vormonat = $tage_monat_davor - $anfangstag + 1;
// VERBINDUNG ZUR DATENBANK
$db = mysql_connect('localhost', 'root', '');
mysql_select_db('events_db',$db);
// Aus der Datenbank holen wir die Tage in diesem Monat, an denen Aktivitäten stattfinden
$resultat = mysql_query("select DAYOFMONTH(datum)
as tag from events where YEAR(datum)= $jahr
and MONTH(datum) = $monat") or die(mysql_error());
$events_in_diesem_monat = mysql_fetch_array($resultat);
/* KALENDER WIRD ERZEUGT */
echo "<p align='left'><br><table id='eventkalender'cellpadding='0' cellspacing='0'>
<tr><td class='pfeil'><b>";
// Pfeil nach links (1 Jahr zurueck)
echo "<a href='kalender.php?pfeil=zurueck&monat=".$monat."&jahr=".$jahr."'><<</a> ";
echo "</td>";
echo "<td class='monat' colspan='5'>";
if ($monat==1) {print "Jänner ";}
else if ($monat==2) {print "Februar ";}
else if ($monat==3) {print "März ";}
else if ($monat==4) {print "April ";}
else if ($monat==5) {print "Mai ";}
else if ($monat==6) {print "Juni ";}
else if ($monat==7) {print "Juli ";}
else if ($monat==8) {print "August ";}
else if ($monat==9) {print "September ";}
else if ($monat==10) {print "Oktober ";}
else if ($monat==11) {print "November ";}
else if ($monat==12) {print "Dezember ";}
echo $jahr;
echo "</td>";
echo "<td class='pfeil'>";
// Pfeil nach rechts (1 Jahr vor)
echo "<a href='kalender.php?pfeil=vor&monat=".$monat."&jahr=".$jahr."'>>></a>";
echo "</td>";
// Aufbau der Tabelle für den Kalender (SO,MO,DI,MI,DO,FR,SA)
echo "</b></td></tr>
<tr>
<td class='wochentage'>So</td>
<td class='wochentage'>Mo</td>
<td class='wochentage'>Di</td>
<td class='wochentage'>Mi</td>
<td class='wochentage'>Do</td>
<td class='wochentage'>Fr</td>
<td class='wochentage'>Sa</td>
</tr>";
$tag = 1; //Für die Kalendertage
$j = 1; //Für Tage nach dem gewählten Monat
for ($i = 0; $i < KALENDER_FAECHER; $i++)
{
if ( ($i % 7) == 0 ){echo "<tr>";}
if ($i < $anfangstag) //Graue Tage vor dem ersten Tag des Monats (Tage des Vormonats)
{ echo "<td class='graue_tage'>".$vormonat."</td>";
$vormonat++;
}elseif ($tag > $tage_pro_monat) //Graue Tage nach dem letzten des Monats bzw. Tage des nächsten Monats
{ echo "<td class='graue_tage'>".$j."</td>";
$j++;
}else
{
if ($events_in_diesem_monat=="") {
echo "<td>".$tag."</td>";
}
else if (in_array($tag, $events_in_diesem_monat)) {
echo "<td class='tage_events'><a href='events.php?jahr=".$jahr."&monat=".$monat."&tag=".$tag."'>".$tag."</href></td>";
}
else {
echo "<td>".$tag."</td>";
}
$tag++;
}
if ( (($i+1) % 7) == 0 ){echo "</tr>";} // muss +1 sein, damit der Zeilenumbruch an der richtigen Stelle kommt (i beginnt bei 0)
}
echo "</table>";
?>
Kommentar