格式化日期选择器以发布到MySQL DB

时间:2015-02-24 22:02:12

标签: javascript php jquery mysql datepicker

我正在尝试将从日期选择器填充的文本框的值发布到我的数据库,但我不断发布1970-01-01的值。我研究了这个,看不出我出错的地方,下面是输入类型。

<label for="from">From:</label>
<input type="text" id="from" name="from">
<label for="to">To:</label>
<input type="text" id="to" name="to">

然后在表格中我有:

$fromdate  = date('Y-m-d', strtotime($_POST['from']));
$todate    = date('Y-m-d', strtotime($_POST['to']));

$request = mysql_query("INSERT INTO messages (fromdate, todate) VALUES ('$fromdate', '$todate')") or die(mysql_error());

有谁知道如何解决这个问题?

由于

2 个答案:

答案 0 :(得分:1)

您要插入的是一个字符串。如果您将其插入DATE字段,则需要将其转换为日期。此语法将根据您使用的数据库而有所不同。 MySQL使用STR_TO_DATE,而Oracle使用TO_DATE。如果我知道您正在使用什么类型的数据库,我可以帮助您构建查询。

编辑:这是你的代码。您需要在查询本身内部利用MySQL STR_TO_DATE函数。

 $request = mysql_query("INSERT INTO messages (fromdate, todate) 
                         VALUES (STR_TO_DATE(\''.$fromdate.'\',\'%Y-%m-%d\'),
                                 STR_TO_DATE(\''.$todate.'\',\'%Y-%m-%d\')") 
 or die(mysql_error());

此外,当你去制作时,用die()处理mysql错误并不是一个好习惯。它可能会提供您不希望他们拥有的恶意用户信息。

答案 1 :(得分:1)

strtotime()无法正确猜测格式的问题。

因此你可以:

重新格式化DatePicker的标准输出: option-altField - 您可以忽略常规字段并向db发送altField

在PHP输出中重新格式化 而strtotime($_POST['from']))你可以使用这样的东西

$myDate = DateTime::createFromFormat('date-time-format-from-datepicker',$_POST['from'])->format('Y-m-d')

制作正确格式的&date-time-format-from-datepicker&#39;您可以使用php date formatting symbols table - 这需要一些时间,但必须有效