ユーザーが(YYYY-mm-dd)形式で日付を選択し、(H:i)形式で開始時刻と(H:i)形式で終了時刻を選択するユーザー入力フォームがあるか、次の値を持つ3つの変数があると仮定します。
$date = '2012-11-22';
$startTime = '1:00';
$endTime = '4:00';
この値を既存の値の配列と比較する必要があります。私の既存の配列は次のようになります。
Array
(
[0] => Array
(
[id] => 1
[start_datetime] => 2012-11-22 02:30:00
[end_datetime] => 2012-11-22 05:00:00
)
[1] => Array
(
[id] => 2
[start_datetime] => 2012-11-22 00:00:00
[end_datetime] => 2012-11-22 02:30:00
)
[2] => Array
(
[id] => 3
[start_datetime] => 2012-11-22 05:00:00
[end_datetime] => 2012-11-22 08:00:00
)
[3] => Array
(
[id] => 4
[start_datetime] => 2012-11-22 08:00:00
[end_datetime] => 2012-11-22 11:00:00
)
[4] => Array
(
[id] => 5
[start_datetime] => 2012-11-22 11:00:00
[end_datetime] => 2012-11-22 17:00:00
)
)
選択した[date、startTime、endTime]のユーザー入力に、指定されたタイムスロットの配列ですでに予約されているスロットがあるかどうかを確認する必要があります。私が見た解決策は、最初に日付を分割して一致させることです。日付と一致する場合は、それに応じて時刻を一致させる必要があります。私はそれをどうやって使うかについて混乱しています。私はあなたたちからいくつかの簡単な解決策を得たいと思っています:)
ありがとうございました。
更新: 私はこの方法を試してみました。
$arenaSurfaceBooking = array(
array(
'id' => 1,
'start_datetime' => '2012-11-22 02:30:00',
'end_datetime' => '2012-11-22 05:00:00',
),
array(
'id' => 2,
'start_datetime' => '2012-11-22 00:00:00',
'end_datetime' => '2012-11-22 02:30:00',
),
array(
'id' => 3,
'start_datetime' => '2012-11-22 05:00:00',
'end_datetime' => '2012-11-22 08:00:00',
),
array(
'id' => 4,
'start_datetime' => '2012-11-22 08:00:00',
'end_datetime' => '2012-11-22 11:00:00',
),
array(
'id' => 5,
'start_datetime' => '2012-11-22 11:00:00',
'end_datetime' => '2012-11-22 17:00:00',
)
);
foreach($arenaSurfaceBooking as $booking) {
$bookedDateTimestamp = strtotime(date('Y-m-d', strtotime($booking['start_datetime'])));
$inputDateTimestamp = strtotime($context['date']);
$bookedStartTime = strtotime(date('H:i', strtotime($booking['start_datetime'])));
$bookedEndTime = strtotime(date('H:i', strtotime($booking['end_datetime'])));
$userStartTime = strtotime(date('H:i', strtotime($context['start_datetime'])));
$userEndTime = strtotime(date('H:i', strtotime($context['end_datetime'])));
if( $bookedDateTimestamp == $inputDateTimestamp) {
if( $userEndTime <= $bookedStartTime || $userStartTime >= $bookedEndTime) {
echo 'i am booked';
}
}
}
動いていない。