So, da die Frage öfters erschien, habe ich mal die Kalenderbox etwas umgeschrieben und mit Erklärungen versehen. Berücksichtigt wurden auch die Geburtstage, sowie dem Fall wenn es mehrere Termine geben sollte.
<?php
# Copyright by Manuel
# Support www.ilch.de
defined ('main') or die ( 'no direct access' );
function getCalendar($mon, $jahr, $url, $urlod, $data, $cellpadding=2)
{
// Variablenfestlegung
$ak_tag = date('j');
$ak_mon = date('n');
$ak_jahr = date('Y');
$days = date('t',mktime(0,0,0,$mon,1,$jahr));
$fw = str_replace(0,7,date('w',mktime(0,0,0,$mon,1,$jahr))) -1;
$next_mon = $mon +1;
$last_mon = $mon -1;
$next_jahr = $jahr;
$last_jahr = $jahr;
if ($next_mon > 12)
{
$next_jahr = $jahr +1;
$next_mon = 1;
}
if ($last_mon == 0)
{
$last_jahr = $jahr -1;
$last_mon = 12;
}
$mlist = array(
1 => "Jan",
2 => "Feb",
3 => "Mär",
4 => "Apr",
5 => "Mai",
6 => "Jun",
7 => "Jul",
8 => "Aug",
9 => "Sep",
10 => "Okt",
11 => "Nov",
12 => "Dez");
$monName = $mlist[$mon];
// Ausgabe Tabellenkopf
$return_str = '';
$return_str .= '<table width="100%" cellpadding="' . $cellpadding . '" cellspacing="1" border="0">';
$return_str .= '<tr class="Chead">';
$return_str .= '<th><a href="' . str_replace('{mon}',$last_mon, str_replace('{jahr}',$last_jahr, $urlod)) . '"><b><</b></a></th>';
$return_str .= '<th colspan="5" align="center">' . $monName . ' ' . $jahr . '</th>';
$return_str .= '<th><a href="' . str_replace('{mon}',$next_mon, str_replace('{jahr}',$next_jahr, $urlod)) . '"><b>></b></a></th>';
$return_str .= '</tr><tr class="Cdark">';
$return_str .= '<td>Mo</td><td>Di</td><td>Mi</td><td>Do</td><td>Fr</td><td>Sa</td><td>So</td>';
$return_str .= '</tr><tr class="Cnorm">';
$return_str .= str_repeat ('<td> </td>', $fw);
// Ausgabe der Monatstage
for($i=1;$i<=$days;$i++)
{
// Umbruch nach Woche / 7 Tagen
if (($i+$fw-1) % 7 == 0 AND $i > 1)
{
$return_str .= '</tr><tr>';
}
// Prüft auf aktuellen Tag
if ($i == $ak_tag AND $mon == $ak_mon AND $jahr == $ak_jahr)
{
// Klasse des aktuellen Tages
$class = 'Cmite';
}
else
{
// Klasse der anderen Tage
$class = 'Cnorm';
}
$surl = str_replace('{mon}', $mon, str_replace('{tag}',$i, str_replace('{jahr}',$jahr, $url)));
$style = 'font-size:10px; text-decoration:none; '; // Standardformat der Zahlen
$title = '';
$color = '';
$termin = 0;
// Prüft Geburtstage
$aktMonth = date("m", mktime (0, 0, 0, $mon, $i, $jahr));
$aktDay = date("d", mktime (0, 0, 0, $mon, $i, $jahr));
$result = db_query('SELECT `name`, `gebdatum`, `id` FROM `prefix_user` WHERE MONTH(gebdatum) = "' . $aktMonth . '" AND DAY(gebdatum) = "' . $aktDay .'"');
if (db_num_rows($result) != 0)
{
while ($row = db_fetch_object($result))
{
$termin++;
$title .= 'Geburtstag von ' . $row->name . ', ';
$color = 'color:red;'; // Geburtstag in Rot
}
}
// Prüft im Kalender eingetragene Termine
if (isset($data[mktime(0, 0, 0, $mon, $i, $jahr)]))
{
$date = mktime(0, 0, 0, $mon, $i, $jahr);
// Bestimmt die Art des Termins
foreach($data[$date] as $info)
{
$termin++;
$title .= $info['title'] . ', ';
if (strpos($info['title'], "Training") !== false)
{
$color = 'color:yellow;'; // Trainings in Gelb
}
elseif (strpos($info['title'], "Lastwar") !== false)
{
$color = 'color:green;'; // Lastwar in Grün
}
elseif (strpos($info['title'], "Nextwar") !== false)
{
$color = 'color:green;'; // Nextwar in Grün
}
else
{
$color = 'color:blue;'; // Sonstige Termine in Blau
}
}
}
// Mehr als ein Termin am Tag
if ($termin > 1)
{
$color = 'color:black;'; // Mehrere Termine auf ein Tag in Schwarz
}
$title = substr($title, 0, -2);
// Ausgabe der Daten
$out_i = '<td class="' . $class . '" align="center"><a title="' . $title .'" style="' . $style . $color . '" href="' . $surl . '">' . $i . '</a></td>';
$return_str .= $out_i;
}
$return_str .= str_repeat ('<td> </td>', (7-(($i+$fw-1) % 7)) % 7 );
$return_str .= '</tr></table>';
return ($return_str);
}
?>
Zuletzt modifiziert von Lord|Schirmer am 13.09.2015 - 17:22:43