zu setzen Ich arbeite mit einem Ereigniskalender in PHP. Der Kalender selbst funktioniert einwandfrei, aber ich versuche, einzelne Einträge im Kalender basierend auf den Start-/Endzeiten der Ereignisse farblich zu codieren. Ich habe if/elseif-Logik, die nur mit Startzeit funktioniert, aber mein Versuch, Anfang und Endzeiten zu verwenden, hat zu Fremde geführt. HierVersuchen, eine Variable basierend auf mehreren Bedingungen if-elseif in PHP
ist die Funktion:
function get_bg_color ($event_start) {
// set colors for shifts
// 0 = grave
// 1 = days
// 2 = swing
// 3 = weekend
// 4 = day-swing
// 5 = grave-day
// 6 = swing-grave
// $hr = date('H', $event_start);
$hr = date('H:i', $event_start);
$hour1 = str_replace(':', '', $hr);
$hr2 = date('H:i', $event_end);
$hour2 = str_replace(':', '', $hr2);
$day = date('L', $event_start);
if ($day == "sunday" || $day == "saturday") {$color="3";}
# elseif ($hour1 > 0 && $hour1 < 730) {$color="0";}
# elseif ($hour1 >= 730 && $hour1 < 1300) {$color="1";}
# elseif ($hour1 >= 1300 && $hour1 < 1530) {$color="4";}
# elseif ($hour1 >= 1530 && $hour1 < 2100) {$color="2";}
# else {$color="0";}
else {
if ($hour1 > 0 && $hour1 < 730) {
if ($hour2 < 730) {$color="0";}
elseif ($hour2 >= 730 && $hour2 < 1300) {$color="5";}
}
elseif ($hour1 >= 730 && $hour1 < 1300) {
if ($hour2 <= 1300) {$color="1";}
elseif ($hour2 >= 1300 && $hour2 < 1530) {$color="4";}
}
elseif ($hour1 >= 1300 && $hour1 < 1530) {
if ($hour2 <= 1530) {$color="4";}
elseif ($hour2 >= 1530 && $hour2 < 2100) {$color="4";}
}
elseif ($hour1 >= 1530 && $hour1 < 2100) {
if ($hour2 <= 2100) {$color="2";}
elseif ($hour2 > 2100) {$color="6";}
}
else {$color="0";}
}
return $color;
}
Die kommentierten-out elseifs sind die funktionstüchtige Version der Logik, die nur die Startzeit verwendet. Der untere Block von elseifs (meine modifizierte Start/Ende-Logik) beschert mir immer wieder verirrte Wochenendfarben für Ereignisse, die nicht auf ein Wochenende fallen.
Farben sind in einem separaten style.css
definiert. Die Variablen $event_start
und werden aus einer Datenbank abgerufen. Diese funktionieren alle, wie im kommentierten Block getestet.
Also genau das, was ___Schwierigkeit___ siehst du? – RiggsFolly
'date ('L', $ event_start);' gibt eine Zahl zurück, die nicht aus einem Tag besteht! 'date ('l', $ event_start);' gibt einen Tagnamen zurück, der Ihren Code ___Strangessigkeit___ verursachen würde – RiggsFolly
Gute Arbeit, Detective Folly. – Farkie