Как отправить в бд диапазон дат, если я знаю первую и последнюю?

drkrol

Постоялец
Регистрация
6 Мар 2016
Сообщения
112
Реакции
11
Здравствуйте. Есть вот такой календарик Для просмотра ссылки Войди или Зарегистрируйся. Нужно, чтобы после выбора определённых дат, они записывались в бд, но нужно, чтобы в таблице записывались все выбранные даты. То есть: если выбран промежуток от 1.01.16 до 4.01.16, то в таблицу должны записаться все числа: 1, 2, 3 и 4 число. Я без проблем могу создать через php в бд строки с последней и с первой датой, но промежуток не могу... Помогите составить такой php запрос.
 
Как вам такое:

PHP:
<?php
foreach (range($one, $two) as $number) {
    echo $number." \n";
}
?>

Или как-то так:

PHP:
for ($number = $one; $number <= $two; $number++)
    echo "$number <br>\n";


Или если конкретно с датами:

PHP:
function date_range($first, $last, $step = '+1 day', $output_format = 'd/m/Y' ) {

    $dates = array();
    $current = strtotime($first);
    $last = strtotime($last);

    while( $current <= $last ) {

        $dates[] = date($output_format, $current);
        $current = strtotime($step, $current);
    }

    return $dates; // здесь можем прописать свой sql запрос
}

Функция работает так:
PHP:
getDatesFromRange('2016-11-11', '2016-11-20');
 
Последнее редактирование:
чет я туплю. я аот так сделал, но теперь у меня не получается сделать запись в бд
PHP:
$from = new DateTime('2016-01-31');
$to   = new DateTime('2016-02-04');
$period = new DatePeriod($from, new DateInterval('P1D'), $to);
$array_dates = array_map(
    function($item){return $item->format('Y.m.d');},
    iterator_to_array($period)
);
mysqli_query($connect, "INSERT INTO `date` VALUES ('$array_dates', '$array_dates')");

я, чтоб наверняка, создал два поля: первый text, второй datatime. Но почему-то одно поле заполняется текстом "array", а второй 0000-00-00 00:00:00
 
between не подходит?
Я только неделю разбираюсь с php и не особо всё понимаю. Но вот дошел до этого этапа:
Всё почти работает вот с этим кодом.
PHP:
$from = new DateTime('2016-01-31');
$to   = new DateTime('2016-02-04');
$period = new DatePeriod($from, new DateInterval('P1D'), $to);
$array_dates = array_map(
    function($item){return $item->format('Y-m-d');},
    iterator_to_array($period)
);
$date_string = implode("'),('",$array_dates);
$dat =  "('".$date_string."')";
mysqli_query($connect, "INSERT INTO `date` (`brondate`) VALUES ".$dat);
Только крайняя, записанная в бд, дата - 2016-02-03, хотя должна быть 2016-02-04
 
Назад
Сверху