0

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応答を受け取りますが、データベースに行が入力されていません。

4

3 に答える 3

3

datesフィールドを引用符で 囲む必要があります。

mysql_query("INSERT INTO events VALUES (null, '$title', '$desc', '$startDate', '$endDate');") or header("Location: ./?p=calendar.php&msg=" . mysql_error());
于 2012-10-23T21:06:24.157 に答える
0

クエリを調整して、日付を一重引用符で囲むことができます。これを読んでください。

$query_manual = "INSERT INTO tablename (col_name, col_date) VALUES ('DATE: Manual Date', '2008-7-04')";

また、ユーザーにその形式で日付を入力するように求めるのは、少し面倒かもしれません。人々は最近、デートピッカーを期待しています。これは、 jqueryuiから頻繁に使用する非常に単純なものです。入力日付を YYYY-MM-DD の形式にできます。時間を追加する必要がある場合は、jquery datepicker を timepicker に拡張できます

于 2012-10-23T21:06:16.953 に答える
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());
于 2012-10-23T21:07:29.990 に答える