Hallo Rolf,
danke für deine sehr ausführliche Erklärung. Allerdings funktioniert dieses leider nicht. Wenn ich meinen Code so umbaue wie du es beschrieben hast habe ich in jedem Monat die gleichen Wochennummern. Außerdem kann ich schlecht alles komplett umbauen, der Code hat im realen Einsatz knapp 500 Zeilen Code, wo Termine ausgelesen werden usw... das wäre ein Unding wenn ich dieses alles umbauen muss, ich sitze an diesem Kalender jetzt fast ein Jahr und es funktioniert noch immer nicht so wie ich es gerne hätte. Mit deinen Änderungen fange ich fast wieder bei 0 an, das kann ich leider nicht.
Schade, dann muss ich wohl auf meine Wochennummern verzichten.
Nur dass du mal siehst wie das ganze ausschaut. Hier der Code inkl. aller Abfragen und Abhängigkeiten.
$admin_kalenderarten = admin_kalenderarten($mysqli);
function Kalender_Termine($mysqli, $datum, $teile25, $limit=false) {
$values = $teile25;
$empfaengerListe = "'".implode("','", $values)."'";
$select = "SELECT kt_id, kt_kalenderID, kt_datum, test, k_code, k_art, k_jobNr, k_bezeichnung, k_auto, k_farbe, k_datum_von,
k_ganztags, k_von, k_bis, f_bezeichnung, f_kennzeichen, ka_farbe, kf_farbe, kf_color
FROM kalender_termine
LEFT JOIN kalender ON kalender.k_code = kalender_termine.kt_kalenderID
LEFT JOIN fuhrpark ON fuhrpark.f_id = kalender.k_auto
LEFT JOIN kalender_arten ON kalender_arten.ka_code = kalender.k_art
LEFT JOIN kalender_terminfarbe ON kalender_terminfarbe.kf_farbe = kalender_arten.ka_farbe
WHERE kt_datum=?
AND k_art IN (" . $empfaengerListe . ")
ORDER by test ASC";
if ($limit != false) {
$stmt = $mysqli->prepare($select . " LIMIT ?" );
$stmt->bind_param("ss", $datum, $limit);
} else {
$stmt = $mysqli->prepare($select );
$stmt->bind_param("s", $datum);
}
$stmt->execute();
$stmt->bind_result($kt_id, $kt_kalenderID, $kt_datum, $test, $k_code, $k_art, $k_jobNr, $k_bezeichnung, $k_auto, $k_farbe, $k_datum_von, $k_ganztags,
$k_von, $k_bis, $f_bezeichnung, $f_kennzeichen, $ka_farbe, $kf_farbe, $kf_color);
$stmt->store_result();
if($stmt->num_rows() > 0) {
while ($stmt->fetch()){
$Kalender_Termine[] = array(
'kt_id' => $kt_id,
'kt_kalenderID' => $kt_kalenderID,
'kt_datum' => $kt_datum,
'test' => $test,
'k_code' => $k_code,
'k_art' => $k_art,
'k_jobNr' => $k_jobNr,
'k_bezeichnung' => $k_bezeichnung,
'k_auto' => $k_auto,
'k_farbe' => $k_farbe,
'k_datum_von' => $k_datum_von,
'k_ganztags' => $k_ganztags,
'k_von' => $k_von,
'k_bis' => $k_bis,
'f_bezeichnung' => $f_bezeichnung,
'f_kennzeichen' => $f_kennzeichen,
'ka_farbe' => $ka_farbe,
'kf_farbe' => $kf_farbe,
'kf_color' => $kf_color
);
}
return $Kalender_Termine;
}
}
// Vor und Zurück
if (isset($_GET['ym'])) {
$ym = $_GET['ym'];
$parts = explode("-", $ym);
$month = (int)$parts[1]; // convert string to integer
$year = (int)$parts[0];
} else {
// Aktueller Monat
$ym = date('Y-m');
$parts = explode("-", $ym);
$month = date("n");
$year = (int)$parts[0];
}
$timestamp = strtotime($ym."-01");
if ($timestamp === false) {
$timestamp = time();
}
// Monate auf Deutsch
$monate = array(1=>"Januar", 2=>"Februar", 3=>"März", 4=>"April", 5=>"Mai", 6=>"Juni", 7=>"Juli", 8=>"August", 9=>"September",
10=>"Oktober", 11=>"November", 12=>"Dezember");
// Heute ermitteln
$today = date('Y-m-j', time());
// H3 Title
$html_title = date('Y / m', $timestamp);
// Prev & Next / Monat Link
$prev = date('Y-m', mktime(0, 0, 0, date('m', $timestamp)-1, 1, date('Y', $timestamp)));
$next = date('Y-m', mktime(0, 0, 0, date('m', $timestamp)+1, 1, date('Y', $timestamp)));
// Anzahl der Tage ermitteln
$day_count = date('t', $timestamp);
// 0:So 1:Mo 2:Di usw...
$str = date('w', mktime(0, 0, 0, date('m', $timestamp), 0, date('Y', $timestamp)));
// Kalender zusammenbauen!!
$weeks = array();
$week = '';
// Leer Zeilen hinzufügen
$week .= str_repeat('<td></td>', $str);
for ( $day = 1; $day <= $day_count; $day++, $str++) {
$date = $ym.'-'.$day;
$datumTermine = Kalender_Termine($mysqli, $date, $teile25, 3);
$datumTermine_Alle = Kalender_Termine($mysqli, $date, $teile25);
$test = count($datumTermine_Alle);
if ($today == $date) {
if ($test > 3) {
$week .= '<td class="today testEintrag"><div style="margin:5px 8px">'.$day .' - <a href="tageskalender.php?date='.$date .'">Alle '.$test.' anzeigen</a></div>';
} else {
$week .= '<td class="today testEintrag"><div style="margin:5px 8px"><a href="tageskalender.php?date='.$date .'">'.$day .'</a></div>';
}
} else {
if ($test > 3) {
$week .= '<td class="testEintrag"><div style="margin:5px 8px">'.$day .' - <a href="tageskalender.php?date='.$date .'">Alle '.$test.' anzeigen</a></div>';
} else {
$week .= '<td class="testEintrag"><div style="margin:5px 8px"><a href="tageskalender.php?date='.$date .'">'.$day .'</a></div>';
}
}
if($datumTermine > 0) {
//$week .= '<br><br>';
foreach($datumTermine as $array){
$test_datum = $array["kt_datum"];
$wochentage = array ('So','Mo','Di','Mi','Do','Fr','Sa');
list ($jahr, $monat, $tag) = explode ('-', $test_datum) ;
$datum = getdate(mktime ( 0,0,0, $monat, $tag, $jahr));
$wochentag = $datum['wday'];
if ($array["kt_datum"] == $array["k_datum_von"]) {
if ($array["k_ganztags"] == "0") {
if ($array["k_jobNr"] == "") {
$week .= '<div style="background:'.$array["ka_farbe"].'; margin-bottom:5px; padding-left:8px;">
<a href="/kalender-datenblatt.php?code='.$array["k_code"].'" style="color:'.$array["kf_color"].';">'. $array["k_bezeichnung"]. "</a>
<span style='color:".$array["kf_color"]."; font-size:10px; display: block; padding-bottom: 2px;'>". $array["k_von"]. " bis " . $array["k_bis"]. " Uhr". '</span>
</div>';
} else {
$week .= '<div style="background:'.$array["ka_farbe"].'; margin-bottom:5px; padding-left:8px;">
<a href="/kalender-datenblatt.php?code='.$array["k_code"].'" style="color:'.$array["kf_color"].';">'. shortText($array["k_bezeichnung"],15). "</a>
<span style='color:".$array["kf_color"]."; font-size:10px; display: block; padding-bottom: 2px;'>". $array["k_jobNr"] . " - " . $array["k_von"]. " bis " . $array["k_bis"]. " Uhr". '</span>
</div>';
}
} else {
if ($array["k_auto"] == "") {
if ($array["k_jobNr"] == "") {
$week .= '<div style="background:'.$array["ka_farbe"].'; margin-bottom:5px; padding-left:8px; min-height: 37px;">
<a href="/kalender-datenblatt.php?code='.$array["k_code"].'" style="color:'.$array["kf_color"].'">'.shortText($array["k_bezeichnung"],15). '</a>
</div>';
} else {
$week .= '<div style="background:'.$array["ka_farbe"].'; margin-bottom:5px; padding-left:8px; min-height: 37px;">
<a href="/kalender-datenblatt.php?code='.$array["k_code"].'" style="color:'.$array["kf_color"].'">'.shortText($array["k_bezeichnung"],15). "</a>
<span style='color:".$array["kf_color"]."; font-size:10px; display: block; padding-bottom: 2px;'>". $array["k_jobNr"]. '</span>
</div>';
}
} else {
$week .= '<div style="background:'.$array["ka_farbe"].'; margin-bottom:5px; padding-left:8px; min-height: 37px;">
<a href="/kalender-datenblatt.php?code='.$array["k_code"].'" style="color:'.$array["kf_color"].'">'.shortText($array["f_bezeichnung"],15). "</a>
<span style='color:".$array["kf_color"]."; font-size:10px; display: block; padding-bottom: 2px;'>". $array["k_jobNr"]. '</span>
</div>';
}
}
} else {
if ($wochentage[$wochentag] == "Mo") {
if ($array["k_auto"] == "") {
$week .= '<div style="background:'.$array["ka_farbe"].'; margin-bottom:5px; padding-left:8px; height: 37px;"><span style="color:'.$array["kf_color"].'"><a href="/kalender-datenblatt.php?code='.$array["k_code"].'" style="color:'.$array["kf_color"].'">'.shortText($array["k_bezeichnung"],15).'</a> <span style="color:'.$array["kf_color"].'; font-size:10px; display: block; padding-bottom: 2px;">'. $array["k_jobNr"]. '</span></div>';
} else {
$week .= '<div style="background:'.$array["ka_farbe"].'; margin-bottom:5px; padding-left:8px; height: 37px;"><span style="color:'.$array["kf_color"].'"><a href="/kalender-datenblatt.php?code='.$array["k_code"].'" style="color:'.$array["kf_color"].'">'.shortText($array["f_bezeichnung"],15).'</a><span style="color:'.$array["kf_color"].'; font-size:10px; display: block; padding-bottom: 2px;">'. $array["k_jobNr"]. '</span></div>';
}
} else {
$week .= '<div style="background:'.$array["ka_farbe"].'; margin-bottom:5px; padding-left:8px; height: 37px;"></div>';
}
}
}}
$week .= '</td>';
// Ende der Woche bzw. Ende des Monats
if ($str % 7 == 6 || $day == $day_count) {
if($day == $day_count) {
// Zelle hinzufügen
$week .= str_repeat('<td></td>', 6 - ($str % 7));
}
$weeks[] = '<tr>'.$week.'</tr>';
// Neue Woche
$week = '';
}
}
Bis bald!
Bernd