Ето и задачата:
имаме часове за запазване на стая, през 1 час:
17:30 - 18:30
18:30 - 19:30
19:30 - 20:30
20:30 - 21:30
потребителя може да запази за минимум 2 часа. Пример:
17:30 - 18:30
18:30 - 19:30
19:30 - 20:30
20:30 - 21:30
Тук в червено е запазеното в интервал: 18:30 - 21:30
Тук обаче остава един свободен час (17:30 - 18:30) който трябва вече да може да се запази.
В случая имаме само началния час от колоната - потребителя може да избере само свободен час, трябва според него и вече запазените да изведем в селект възможните часове.
Запазените часове са във формат:
Още един пример:
17:30 - 18:30
18:30 - 19:30
19:30 - 20:30
20:30 - 21:30
Тук според началния час - 19:30 трябва да му покажем в селект само 21:30.
Ако беше запазено 17:30 - 20:30 трябва да му покажем 21:30 като възможен час.
Аз как се мъча:
разделил съм със
Но това премахва и часовете които може да се запазят и не виждам как ще го направя според началния час да сравня.
Идеи?
имаме часове за запазване на стая, през 1 час:
17:30 - 18:30
18:30 - 19:30
19:30 - 20:30
20:30 - 21:30
потребителя може да запази за минимум 2 часа. Пример:
17:30 - 18:30
18:30 - 19:30
19:30 - 20:30
20:30 - 21:30
Тук в червено е запазеното в интервал: 18:30 - 21:30
Тук обаче остава един свободен час (17:30 - 18:30) който трябва вече да може да се запази.
В случая имаме само началния час от колоната - потребителя може да избере само свободен час, трябва според него и вече запазените да изведем в селект възможните часове.
Запазените часове са във формат:
Код:
1830-2130
Още един пример:
17:30 - 18:30
18:30 - 19:30
19:30 - 20:30
20:30 - 21:30
Тук според началния час - 19:30 трябва да му покажем в селект само 21:30.
Ако беше запазено 17:30 - 20:30 трябва да му покажем 21:30 като възможен час.
Аз как се мъча:
разделил съм със
PHP:
$reserveds = explode('-' , $reserved_hours);
$reserved_start[] = $reserveds[0];
$reserved_end[] = $reserveds[1];
PHP:
$hours = array(1830 => 1830,1930=> 1930,2000=> 2000,2030=> 2030,2100=> 2100,2130=> 2130);
function between_1213($val, $min, $max) {
return ($val >= $min && $val <= $max);
}
if(count($reserved_start) > 0) {
foreach($hours as $hour) {
$i = -1;
foreach($reserved_start as $reserved) { $i++;
if(between_1213($hour, $reserved, $reserved_end[$i])) {
unset($hours[$hour]);
}
}
}
}
Идеи?