从HTML5表单获取日期 - 并发布到MySQL

时间:2013-11-21 21:58:39

标签: php mysql html5 forms date

我有一个基本的网络表单,我需要约会"日期"输入类型(html5参见http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_input_type_date)并将其发布到我的MySQL数据库(其类型为DATE - 注意:不是DATETIME)。

我需要某种PHP / JS巫毒来互相交流,有什么线索吗?

这是我到目前为止所得到的,它总是产生1970-01-01的默认日期。

将它作为普通输入更好并用Jquery强制格式化吗?

<!-- zee form: -->
<div>
    <!-- Start Date -->
    <div>
        <label class="col-offset-half col-3" for="order_contractStart">Contract Start:</label>
        <input class="col-offset-half col-7" type="date" id="order_contractStart" name="order_contractStart">
    </div>
    <!-- End Date -->
    <div>
        <label class="col-offset-half col-3" for="order_contractEnd">Contract End:</label>
        <input class="col-offset-half col-7" type="date" id="order_contractEnd" name="order_contractEnd">
    </div>

然后在我的行动中我有:

//Get Variables from form
$start = date("Y-m-d", $_GET['order_start']);
$end = date("Y-m-d", $_GET['order_end']);

事实证明这种方法并没有真正起作用 - 所以任何指针都会非常感激。

2 个答案:

答案 0 :(得分:4)

在调用strtotime()之前,您需要使用date(),这样您就可以使用UNIX时间戳(日期需要;)。此外,索引与HTML中定义的索引不匹配。

$start = date("Y-m-d", strtotime($_GET['order_contractStart']));
$end = date("Y-m-d", strtotime($_GET['order_contractEnd']));

也不要fooled by w3schools

答案 1 :(得分:0)

如果您使用

<input type="date" name="DOB">

然后

$DOB = $_POST['DOB'];

好像你回应

echo $_POST['DOB'] . '<br>';
echo strtotime($_POST['DOB']) . '<br>';
echo date("Y-m-d", strtotime($_POST['DOB'])) . '<br>';

你会看到第1和第3行是相同的。 我的问题是我使用的是Bind SQL,需要

$stmt->bind_param('s

用's' 以及数据库中设置为Date的列的结构。

<input type="date">仅适用于Chrome,Safari和Opera,不适用于Firefox或Internet Explorer。 所以我建议使用像

这样的东西
<input type="date" name="DOB" placeholder="dd-mm-yyyy" pattern="\d{1,2}-\d{1,2}-\d{4}">

使其适用于所有浏览器和验证