2014-07-11 88 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