unit_id int(10) UNSIGNED NOT NULL COMMENT 'Id гостиницы.',
year int(11) NOT NULL DEFAULT 0 COMMENT 'Календарный год, за который эта строка доступность соответствующих',
month int(11) NOT NULL DEFAULT 0 COMMENT 'Месяца, за который эта строка доступность соответствующих',
d1 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 1',
d2 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 2',
d3 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 3',
d4 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 4',
d5 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 5',
d6 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 6',
d7 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 7',
d8 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 8',
d9 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 9',
d10 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 10',
d11 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 11',
d12 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 12',
d13 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 13',
d14 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 14',
d15 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 15',
d16 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 16',
d17 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 17',
d18 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 18',
d19 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 19',
d20 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 20',
d21 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 21',
d22 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 22',
d23 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 23',
d24 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 24',
d25 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 25',
d26 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 26',
d27 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 27',
d28 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 28',
d29 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 29',
d30 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 30',
d31 int(11) NOT NULL DEFAULT 2 COMMENT 'Month Day 31',
INDEX month (month),
UNIQUE INDEX month_key (unit_id, year, month),
INDEX unit_id (unit_id),
INDEX year (year)
(function($) {
"use strict";
function count_days(date1, date2) {
var each_day = 1000 * 60 * 60 * 24;//milliseconds in a day
var ms_date1 = date1.getTime();//milliseconds for date1
var ms_date2 = date2.getTime();//milliseconds for date2
var ms_date_diff = Math.abs(ms_date1 - ms_date2);//different of the two dates in milliseconds
var days = Math.round(ms_date_diff / each_day);//divided the different with millisecond in a day
var ed = end.subtract(1, 'days');
start.add('month', 1);
end.add('month', 1);
var day_start = new Date(start);
var start_date = day_start.getMonth()+"/"+day_start.getDate()+"/"+day_start.getFullYear();
var day_end = new Date(end);
var end_date = day_end.getMonth()+"/"+day_end.getDate()+"/"+day_end.getFullYear();
$(".date-end-js").val(end_date);
},
eventRender: function(event, el) {
el.find('.fc-time').remove();
},
});
}
function SecondsToDay(seconds){
var second = new Date(seconds);
var date = second.toLocaleDateString('de-DE', {
month: '2-digit',
day: '2-digit',
year: 'numeric',
}).replace(/\./g, '/');
return date;
maximw: Как Вообще сделать бронирование на интервал дат, с проверкой есть ли в этих датах интервал других дат.
Пример: я бронирую отель с 10.06.2017 по 20.06.2017 итого = 10 дней.
но у отеля акция с 15.06.2017 по 15.06.2017.
Получается я забронировал 10 дней из них 5 дней (1000р) по обычной цене а 5 по акции (2000р)
Итого: 15000к рур как просчитать это PHP SQL JAVA ???? HELP.
Условия - на период (бесконечность) если нет акции цены заданы.
есть 10 категорий в которых задаются даты начала и конец акции со своими ценами.
Спасибо за ответ, по вашему примеру можно поподробнее ) как можно в данном случае это сделать с теми крематориями что выложил ниже.
Создавать отдельную ячейку под каждый день 365
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
* какие цены в днях диапазона номеров.
*
* @param string $from From date.
* @param string $to To date.
* @param int $room_id Room ID.
* @param integer $night Number of nights.
*
* return array
* @since 1.0.0
*/
public static function get_pricing_of_days( $from, $to, $room_id, $night = 1 ) {
$start_month = date( 'm', strtotime( $from ) );
$end_month = date( 'm', strtotime( $to ) );
$start_year = date( 'Y', strtotime( $from ) );
$end_year = date( 'Y', strtotime( $to ) );
$start_date = date( 'd', strtotime( $from ) );
$end_date = date( 'd', strtotime( $to ) );
$key_pricing = array();
if ( $start_month == $end_month ) {
$check_pricing = AWE_function::check_apb_pricing( $start_year, $start_month, $room_id );
if ( ! empty( $check_pricing ) ) {
for ( $day = ( int ) $start_date; $day <= ( int ) $end_date - $night; $day++ ) {
$get_price = 'd' . $day;
if ( checkdate( $start_month, $day, $start_year ) ) {
$key_pricing[ $start_month ][ $day ] = $check_pricing[0]->$get_price;
}
}
} else {
for ( $day = ( int ) $start_date; $day <= ( int ) $end_date - $night; $day++ ) {
$get_price = 'd' . $day;
if ( checkdate( $start_month, $day, $start_year ) ) {
$key_pricing[ $start_month ][ $day ] = get_post_meta( $room_id, 'base_price', true );
}
}
}
} else {
$list_month = AWE_function::get_list_day( $start_year, $end_year, $start_month, $end_month );
if ( count( $list_month ) > 2 ) {
//====== List month > 2 ============//
// Month day start
$_monthStart = $list_month[0];
$_monthEnd = $list_month[ count( $list_month ) - 1 ];
unset( $list_month[0] );
unset( $list_month[ count( $list_month ) ] );
$check_pricing_start = AWE_function::check_apb_pricing( $_monthStart['y'], $_monthStart['m'], $room_id );
if ( ! empty( $check_pricing_start ) ) {
$total_day = date( 't', mktime( 0, 0, 0, $start_year, 1, $start_month ) );
for ( $day = ( int ) $start_date; $day <= ( int ) $total_day; $day++ ) {
$get_price = 'd' . $day;
if ( checkdate( $_monthStart['m'], $day, $start_year ) ) {
$key_pricing[ $_monthStart['m'] ][ $day ] = $check_pricing_start[0]->$get_price;
}
}
} else {
$total_day = date( 't', mktime( 0, 0, 0, $start_year, 1, $start_month ) );
for ( $day = ( int ) $start_date; $day <= ( int ) $total_day; $day++ ) {
$get_price = 'd' . $day;
if ( checkdate( $_monthStart['m'], $day, $start_year ) ) {
$key_pricing[ $_monthStart['m'] ][ $day ] = get_post_meta( $room_id, 'base_price', true );
}
}
}
foreach ( $list_month as $monthCenter ) {
$check_pricing = AWE_function::check_apb_pricing( $monthCenter['y'], $monthCenter['m'], $room_id );
if ( ! empty( $check_pricing ) ) {
$total_day = date( 't', mktime( 0, 0, 0, $start_year, 1, $start_month ) );
for ( $day = 0; $day <= ( int ) $total_day; $day++ ) {
$get_price = 'd' . $day;
if ( checkdate( $monthCenter['m'], $day, $start_year ) ) {
$key_pricing[ $monthCenter['m'] ][ $day ] = $check_pricing[0]->$get_price;
}
}
} else {
$total_day = date( 't', mktime( 0, 0, 0, $start_year, 1, $start_month ) );
for ( $day = 0; $day <= ( int ) $total_day; $day++ ) {
if ( checkdate( $monthCenter['m'], $day, $start_year ) ) {
$key_pricing[ $monthCenter['m'] ][ $day ] = get_post_meta( $room_id, 'base_price', true );
}
}
}
}
// Month day end.
$check_pricing_end = AWE_function::check_apb_pricing( $_monthEnd['y'], $_monthEnd['m'], $room_id );
if ( ! empty( $check_pricing_end ) ) {
for ( $day = 1; $day <= ( int ) $end_date - $night; $day++ ) {
$get_price = 'd' . $day;
if ( checkdate( $_monthEnd['m'], $day, $start_year ) ) {
$key_pricing[ $_monthEnd['m'] ][ $day ] = $check_pricing_end[0]->$get_price;
}
}
} else {
for ( $day = 1; $day <= ( int ) $end_date - $night; $day++ ) {
$get_price = 'd' . $day;
if ( checkdate( $_monthEnd['m'], $day, $start_year ) ) {
$key_pricing[ $_monthEnd['m'] ][ $day ] = get_post_meta( $room_id, 'base_price', true );
}
}
}
} else {
// Month day start.
$check_pricing_start = AWE_function::check_apb_pricing( $list_month[0]['y'], $list_month[0]['m'], $room_id );
if ( ! empty( $check_pricing_start ) ) {
$total_day = date( 't', mktime( 0, 0, 0, $start_year, 1, $start_month ) );
for ( $day = ( int ) $start_date; $day <= ( int ) $total_day; $day++ ) {
$get_price = 'd' . $day;
if ( checkdate( $list_month[0]['m'], $day, $start_year ) ) {
$key_pricing[ $list_month[0]['m'] ][ $day ] = $check_pricing_start[0]->$get_price;
}
}
} else {
$total_day = date( 't', mktime( 0, 0, 0, $start_year, 1, $start_month ) );
for ( $day = ( int ) $start_date; $day <= ( int ) $total_day; $day++ ) {
$get_price = 'd' . $day;
if ( checkdate( $list_month[0]['m'], $day, $start_year ) ) {
$key_pricing[ $list_month[0]['m'] ][ $day ] = get_post_meta( $room_id, 'base_price', true );
}
}
}
// Month day start.
$check_pricing_end = AWE_function::check_apb_pricing( $list_month[ count( $list_month ) - 1 ]['y'], $list_month[ count( $list_month ) - 1 ]['m'], $room_id );
if ( ! empty( $check_pricing_end ) ) {
for ( $day = 1; $day <= ( int ) $end_date - $night; $day++ ) {
$get_price = 'd' . $day;
if ( checkdate( $list_month[ count( $list_month ) - 1 ]['m'], $day, $start_year ) ) {
$key_pricing[ $list_month[ count( $list_month ) - 1 ]['m'] ][ $day ] = $check_pricing_end[0]->$get_price;
}
}
} else {
for ( $day = 1; $day <= ( int ) $end_date - $night; $day++ ) {
$get_price = 'd' . $day;
if ( checkdate( $list_month[ count( $list_month ) - 1 ]['m'], $day, $start_year ) ) {
$key_pricing[ $list_month[ count( $list_month ) - 1 ]['m'] ][ $day ] = get_post_meta( $room_id, 'base_price', true );
}
}
}
}
}
return $key_pricing;
}