2014-07-11 37 views
0

我有以下datepciker:日期到SQL數據庫失敗

<script> 
    $(function() { 
     $("#datepicker").datepicker({ 
      dateFormat: 'mm-dd-YYYY' 
     }).val(getTodaysDate(0)); // For current date 

    }); 

    function getTodaysDate (val) { 
    var t = new Date, day, month, year = t.getFullYear(); 
    if (t.getDate() < 10) { 
     day = "0" + t.getDate(); 
    } 
    else { 
     day = t.getDate(); 
    } 
    if ((t.getMonth() + 1) < 10) { 
     month = "0" + (t.getMonth() + 1 - val); 
    } 
    else { 
     month = t.getMonth() + 1 - val; 
    } 

    return (day + '/' + month + '/' + year); 
    } 
</script> 

輸入:

<input type="text" id="datepicker" name="datepicker"> 

在這裏,我想插入日期到我的MySQL數據庫。沒有錯誤消息,insert命令運行正常,但我的數據庫中的日期字段爲空/ NULL。

$date = $_POST['datepicker']; 
$sql="INSERT INTO table (dt) VALUES ('$date')"; 

這是一些價值型問題或什麼?我的db中的dt列是DATE

* UPDATE @Dwza: 所以我修改劇本:

dateFormat: 'YYYY-mm-dd' 

return (year + '-' + month + '-' + day); 

而你提到的鏈接建議INSERT

$parts = explode('-', $_POST['datepicker']); 
$date = "$parts[2]-$parts[0]-$parts[1]"; 
$sql="INSERT INTO transfer (dt) VALUES ('$date')"; 

仍然沒有去。

**解決:

$date = "$parts[0]-$parts[1]-$parts[2]"; 
+0

與jQuery或JavaScript不同,'$ _POST ['datepicker'];'PHP基於'name'而不是'id'獲取!! :) – NoobEditor

+0

我剛剛也加了'name',檢查Daan的答案,但仍然一樣。 – fishmong3r

+0

你在'$ _POST ['datepicker']'中獲得什麼值?如果它包含看起來像日期的東西,那麼格式可能不同(例如,yyyy-mm-dd與mm/dd/yyy),您將不得不更改日期選擇器格式或更改db語言環境。 –

回答

2

您嘗試插入一個字符串(日期)轉換爲DATE類型的列,您需要有效的日期格式字符串。

11/07/2014似乎是一個德國日期格式:d

檢查this answere

報價:

的MySQL識別這些格式DATE值:

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

  • 作爲一個字符串,無論是'YYYYMMDD'還是'YYMMDD'格式都沒有分隔符,前提是字符串作爲日期有意義。例如,'20070523''070523'被解釋爲'2007-05-23',但'071332'是非法的(它具有無意義的月份和日期部分)並且變爲'0000-00-00'

  • 作爲YYYYMMDDYYMMDD格式中的數字,前提是該數字在日期中有意義。例如,19830905830905被解釋爲'1983-09-05'

這應該解決您的問題:)

改變這種

return (day + '/' + month + '/' + year); 

這個

return (month + '/' + day + '/' + year); 

return (year + '-' + month + '-' + day); 

編輯問:

您不必更改retrun後像我上面賽義德爆炸的數據,它已經有效的日期格式。

你可以在開始時使用它,而不是使用爆炸。

+0

我還沒有意識到...所以如果在腳本中格式設置爲'dateFormat:'mm-dd-YYYY''那麼爲什麼它實際上是'dd/mm/YYYY'? – fishmong3r

+1

你有'return(day +'/'+ month +'/'+ year);'這是德國人^^ – Dwza

+0

omg,我是白癡...... – fishmong3r

1

您的輸入字段指定一個名稱datepicker像這樣:萬一

<input type="text" id="datepicker" name="datepicker"> 
+0

我認爲它通過'id'而不是'name'來檢測它。無論如何,我剛剛添加了一個'name',但我仍然遇到同樣的問題。 – fishmong3r