使用带有开始日期和结束日期的输入将表格插入表中PHP

时间:2018-12-17 16:25:06

标签: php

我正在尝试使用输入内容插入日期范围内的日期

这是我在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);
}

我的数据库表的列是id(自动递增)日期和时间表。 如何输入“ 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

1 个答案:

答案 0 :(得分:-1)

这是从另一个stackoverflow answer取来的。

您可以看一下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, ',');
相关问题