我正在使用PHP中的事件日历。日历本身运行良好,但我正在尝试根据事件开始/结束时间对日历中的各个条目进行颜色编码。我有if / elseif逻辑仅使用开始时间,但我尝试使用开始和结束时间导致奇怪。
这是功能:
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;
}
注释掉的elseif是逻辑的功能版本,仅使用开始时间。 elseifs的下部块(我修改后的开始/结束逻辑)不断给我错误的周末着色,用于不属于周末的事件。
颜色在单独的style.css
中定义。从数据库中提取$event_start
和$event_end
个变量。这些都可以在注释块中进行测试。
答案 0 :(得分:0)
我想我已经抓住了所有 陌生感
function get_bg_color ($event_start, $event_end) {
// --------- Missing Parameter ---^^^^^^^^^^
// needs this parameter on function call as well
$hour1 = date('Hi', $event_start);
// use the format required, save an instruction
//$hour1 = str_replace(':', '', $hr);
$hour2 = date('Hi', $event_end);
// will NOT return a day name, will return 0,1,2,3,4,5,6
//$day = date('L', $event_start);
// will return a day name but need converting to lower case
// so it matches your IF tests which are in lower case
$day = strtolower(date('l', $event_start));
// always a good idea to init returned values
$color = "0";
if ($day == "sunday" || $day == "saturday")
{
$color="3";
} 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;
}
别忘了检查此函数的调用现在也有2个相关参数