PHP даты и подсчет дней - PullRequest
       2

PHP даты и подсчет дней

0 голосов
/ 28 марта 2012

У меня есть сценарий, когда пользователь отправляет дату начала и окончания для бронирования в отеле.База данных имеет разные (ежедневные) цены на периоды года.Учитывая диапазон дат пользователя, я хочу начать с подсчета количества дней, которое диапазон пользователя имеет в каждом диапазоне из базы данных, а затем умножить его на дневную цену для этого диапазона дат.

  03 Jun 2012 - 03 Jul 2012

Соответствующие диапазоны дат из DB

Array
(
    [0] => stdClass Object
        (
            [date_from] => 2012-04-09
            [date_to] => 2012-06-04
            [price] => 44
        )

    [1] => stdClass Object
        (
            [date_from] => 2012-06-04
            [date_to] => 2012-07-02
            [price] => 52
        )

    [2] => stdClass Object
        (
            [date_from] => 2012-07-02
            [date_to] => 2012-07-16
            [price] => 61
        )

)

Как вы можете видеть, резервирование начинается в первом диапазоне, охватывает второй диапазон и заканчивается в третьем диапазоне.

Этот код почти работает, за исключением того факта, что он принимает конец резервирования ($stop) как последнюю дату диапазона БД вместо диапазона пользователя, и я не могу понять, почему!

1 Ответ

2 голосов
/ 28 марта 2012

Рассматривали ли вы делать все это в SQL?Что-то это должно работать:

SELECT
  SUM(
    datediff(
      IF($dateTo>date_to,date_to,$dateTo),
      IF($dateFrom<date_from,date_from,$dateFrom)
    ) * price_per_day
  ) as total_cost
FROM ranges
WHERE '$dateFrom'<=date_to
  AND '$dateTo'>=date_from
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...