Я пытаюсь вставить дату с диапазоном дат, используя входы
вот что я получил в 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
Это взято из другого ответ на стек.
Вы можете взглянуть на класс 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, ',');
Других решений пока нет …