このチュートリアルを使用してビジュアルphpカレンダーにリンクしようとしているmysqlにオンライン予約システムデータベースがあります。
カレンダーでは、毎日がaで表され、<td>
次のPDOクエリを使用して、各日の背景色を決定します(使用可能な場合=色なし、そうでない場合は赤)。
私が抱えている問題の1つは、X日目に終了する1つの予約を視覚的に表示し、同じ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>
";
}
これは、各予約の開始日、それぞれの終了日で斜めに分割された背景画像を視覚的に表示するために機能しますが、ある予約の終了と別の予約の開始の両方がある日を正しく表示することはできません。
私の最初のクエリは1つの予約レコードのみを調べているためだと思います-それらすべてを認識するために必要です、誰か助けてもらえますか?