我在 mysql 中有一个在线预订系统数据库,我正在尝试使用本教程将其与可视 php 日历链接。
日历上的每一天都由 a 表示<td>
,我使用以下 PDO 查询来确定每一天的背景颜色(如果可用 = 无颜色,如果没有则为红色)。
我遇到的一个复杂情况是,我需要直观地显示 1 个预订在 X 天结束,并显示另一个预订在同一天 X 开始。
$query_params = array(
':campervan_id' => $_GET['campervan'],
':day' => $date_form.($i - $startday + 1)
);
$query = "
SELECT
car,
booking_id,
DATE_FORMAT(start_date, '%e/%c') AS s_d,
DATE_FORMAT(end_date, '%e/%c') AS e_d
FROM
bookings as bb
INNER JOIN
reservation as br ON bb.booking_id=br.bookings_id
INNER JOIN
cars as bc ON br.car_id=bc.car_id
WHERE
bc.campervan_id=:campervan_id AND
:day BETWEEN bb.start_date AND bb.end_date
";
然后与我一起使用以下内容输出表格单元格结果:
if($i < $startday) {
echo "
<td>
</td>
";
}
else {
// IF DAY IS AVAILABLE
if(!$rows) {
$color = "none";
}
// IF DAY IS UNAVAILABLE
else {
$color = "#F3747F";
}
$dayMonth = ($i-$startday + 1)."/$cMonth";
// If DAY FALLS ON A START PICK UP DATE
if ($dayMonth == $rows['s_d']) {
$back = "background-image:url(\"images/morning_back.png\");";
$color = "none";
}
// If DAY FALLS ON A END DROP OFF DATE
else if($dayMonth == $rows['e_d']) {
$back = "background-image:url(\"images/afternoon_back.png\");";
$color = "none";
}
// **************************************************
// IF FALLS ON BOTH A START AND END DATE????????
else if($dayMonth == ($rows['s_d'] && $rows['e_d'])) {
$back = "background-image:url(\"images/full_back.png\");";
$color = "none";
}
// **************************************************
else {
$back = "";
}
echo "
<td align='center' valign='middle' height='100px' width='134' style='color:#FFFFFF; background-color:".$color."; ".$back." border:1px solid white;'>
".($i-$startday + 1)."
</td>
";
}
这适用于在每个预订的开始日期、每个预订的结束日期直观地显示对角分割背景图像,但我无法正确显示一个预订的结束和另一个预订的开始的日期。
我认为这是因为我的初始查询只查看一个预订记录 - 我需要它来识别所有这些记录,有人可以帮忙吗?