我正在尝试创建一个表单,通过将事件添加到我的MySQL数据库中来将事件添加到我的日历中。
这是表格:
<form action="actions.php?action=addEvent" method="post">
Titel: <input type="text" name="title"><br/>
Start tid(YYYY-MM-DD HH:MM): <input type="text" name="startDate"><br/>
Slut tid(YYYY-MM-DD HH:MM): <input type="text" name="endDate"><br/>
Beskrivning: <br/>
<textarea rows="15" cols="10" name="description"></textarea>
<input type="submit" value="Spara">
</form>
这是PHP脚本:
if($_GET['action'] == 'addEvent'){
$title = mysql_real_escape_string($_POST['title']);
$desc = mysql_real_escape_string($_POST['description']);
$startDate = date('Y-m-d H:i:s', strtotime($_POST['startDate'] . ":00"));
$endDate = date('Y-m-d H:i:s', strtotime($_POST['endDate'] . ":00"));
mysql_query("INSERT INTO events VALUES (null, '$title', '$desc', $startDate, $endDate);") or header("Location: ./?p=calendar.php&msg=" . mysql_error());
header("Location: ./?p=calendar.php&msg=Sparat");
}
MySQL列类型为DATETIME。我应该如何继续将YYYY-MM-DD HH:MM字符串从表单转换为允许mysql_query()工作的类型。目前我得到了?msg = Sparat响应,但没有输入任何行。
答案 0 :(得分:3)
您需要使用引号
包围dates
字段
mysql_query("INSERT INTO events VALUES (null, '$title', '$desc', '$startDate', '$endDate');") or header("Location: ./?p=calendar.php&msg=" . mysql_error());
答案 1 :(得分:0)
您可以调整查询以在日期周围添加单引号。请阅读this。
$query_manual = "INSERT INTO tablename (col_name, col_date) VALUES ('DATE: Manual Date', '2008-7-04')";
另外,要求用户以该格式输入日期可能有点麻烦。人们期待这些日期的日期选择。 Here's我经常从jqueryui使用的一个非常简单的。您可以将输入日期格式化为YYYY-MM-DD。如果需要添加时间,可以将jquery datepicker扩展为timepicker。
答案 2 :(得分:0)
您收到的日期格式正确。所以你不需要改变它。在mysql_query中使用时,您只需要在日期周围放置单引号。所以你可以:
mysql_query("INSERT INTO events VALUES (null, '$title', '$desc', '".$_POST['startDate']."', '".$_POST['endDate']."');") or header("Location: ./?p=calendar.php&msg=" . mysql_error());