2012-08-30 80 views
2

使用jQuery日期選擇器用下面的代碼轉換jQuery的日期到PHP日期或MySQL日期被正確地插入到數據庫

$(".item").datepicker({ 
    showWeek: true, 
    firstDay: 1, 
    minDate: -30, 
    dateFormat: 'mm-dd-yy' 
}); 

該日期選擇的值將通過AJAX被髮送到PHP函數插入數據在mysql表中。

mysql數據庫的date列類型是Datetime

每次從datepicker輸入值讀取值時,數據庫中的date列爲空顯示00-00-0000 00:00:00

我是PHP的新手,也許我犯了一個錯誤的地方。

php的一段代碼

mysqli_query($connect, "Insert into tab(date) values ('".$myData."')");

如何格式化在適合MySQL的JavaScript的日期?

+0

你真的需要時間的一部分? – Sednus

+0

我很確定這個問題可能在 – Alexander

+0

之前被問了幾次,但時間並不重要,但它是由datetime列類型 –

回答

4

你能先確認日期選擇器被張貼正確的值到服務器?

嘗試提醒某處的值。

如果您已經從JavaScript中的正確的輸入,腳本的PHP的一部分可以做這樣的:

if (isset$_GET['date']){$date=$_GET['date'];} 
$date=date("Y-m-d h:i:s",strtotime($date)); 

回聲,以確認你是不是正確的,最後插入$日期到表。

+0

接受。對於$ date = date(「Y-m-d h:i:s」,strtotime($ date)); –

1

在mysql中的日期格式是YYYY-MM-DD,所以你可以使用 strtotime

$myDataSQL = date("Y-m-d", strtotime($myData)); 
mysqli_query($connect, "Insert into tab(date) values ('".$myDataSQL."')"); 

順便說一句,我會建議使用準備好的語句,以避免SQL注入問題,雖然它並沒有真正在這個特定的情況下很重要。我總是使用準備好的陳述,所以我不必考慮它。

編輯:這似乎strtotime needs / separators工作。

如果您對PHP 5.3+可以使用DateTime類:

$date = DateTime::createFromFormat('m-d-y', $myData); 
$myDataSQL = $date->format('Y-m-d'); 
mysqli_query($connect, "Insert into tab(date) values ('".$myDataSQL."')"); 
+0

給我01- 01-1970 –

+0

@Snake Eyes看來strtotime不喜歡你的輸入格式,請參閱我的編輯。 – jeroen

+0

createFromFormat需要2個參數 –

0

queryAccording到mysql documentation

如在任一 'YYYY-MM-DD' 的字符串或 'YY-MM-DD' 格式。允許使用「寬鬆」的語法:任何標點字符都可以用作日期部分之間的分隔符。例如,「2012-12-31」,「2012/12/31」,「2012^12^31」和「2012 @ 12 @ 31」等同。

所以你可以只改變datepicker採取日期的格式。

$(".item").datepicker({ dateFormat: "yy-mm-dd" }); 

把那到你的更新應該做的伎倆,你甚至不會需要額外的解析服務器操作。只要確保它能安全地到達服務器。

0

不同的看法上的Jeroen的回答

$myDataSQL = date("c", strtotime($myData)); 
mysqli_query($connect, "Insert into tab(date) values ('".$myDataSQL."')"); 

我發現使用ISO 8601日期到處好辦了時區,因爲它們是可見的,也是同樣適用。加上它插入到MySQL。

同樣在過去,我在jQuery數據讀取器中遇到了問題,需要在其初始化中指定更好的格式。

也許嘗試

$(".item").datepicker({ 
    showWeek: true, 
    firstDay: 1, 
    minDate: -30, 
    dateFormat: "yy/mm/dd" 
});