вставить в таблицу, используя ввод с начальной и конечной датами переполнения стека

Я пытаюсь вставить дату с диапазоном дат, используя входы

вот что я получил в HTML

<input type="date" id="startdate" name="startdate"/> //ex. value="2018-12-18"<input type="date" id="enddate" name="enddate"/> //ex. value="2018-12-31"

мой код PHP

$db = mysqli_connect('localhost', 'root', '', 'database');
if(isset($_POST['submit']))//this is my submit button
{
$startdate = $_POST['startdate']
$enddate = $_POST['enddate']

$query = "INSERT INTO appointment (date) VALUES (//i want to insert all covered date from start to end)";
mysqli_query($db, $query);
}

моя таблица базы данных — это столбец с идентификатором (автоинкремент), датой и расписанием.
Как я могу ввести дату от «2018-12-18 до 2018-12-31 в строке»

я хочу, чтобы мой вывод в моей таблице, как это:

|   date   |
|2018-12-18|
|2018-12-19|
|2018-12-20|
|2018-12-21| //so on and so fort until reach the end date

0

Решение

Это взято из другого ответ на стек.

Вы можете взглянуть на класс DatePeriod:

$period = new DatePeriod(
new DateTime($_POST['startdate']),
new DateInterval('P1D'),
new DateTime($_POST['enddate'])
);

Который должен получить массив с объектами DateTime.

Итерировать

foreach ($period as $key => $value) {
//$value->format('Y-m-d')
}

Вы можете сделать это в одном запросе так:

$query = "INSERT INTO appointment (date) VALUES";
foreach ($period as $key => $value) {
$date = $value->format('Y-m-d');
$query .= "('$date'),";
}

Что дает вам:

INSERT INTO appointment (date) VALUES('2010-10-01'),('2010-10-02'),('2010-10-03'),
('2010-10-04'),

Возможно, вам придется удалить последнюю запятую.

$query = rtrim($query, ',');
-1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector