get current time from pc and save it in database
我在mysql中有一个名为apply(id,user,time_apply)的数据库。 我已将time_apply的结构设置为"datetime"
我有一个PHP脚本,它试图从用户的PC获取当前的DATE和TIME并将其存储在我的数据库中。 用户的电脑可以在世界任何地方。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php $timeString=' <script language="javascript"> var today = new Date(); document.write(today); '; //id is my database primary key, so I don't insert anything inside mysql_query("INSERT INTO `apply` VALUES ('', '$session_user_id', '$timeString')"); ?> |
问题是在mysql_query执行后,我无法在我的数据库中插入当前用户的日期和时间。 我得到类似的东西:0000-00-00 00:00:00
知道怎么解决吗?
我不知道为什么你想要抓住客户的时间,但这就是你要怎么做的。
首先,您需要分离您的javascript和php脚本。你可以有php输出javascript但不是你编写的方式。
您可以创建一个隐藏元素,只要您选择的javascript事件触发,该元素就会被设置。我使用了提交按钮的onclick事件,你可以使用page_load或其他什么。然后,您可以从php $ _POST变量集合中提取该值。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <script language="javascript"> function submit_OnClick() { document.getElementById("clientDate").value = currentdate.getDate() +"/" + (currentdate.getMonth()+1) +"/" + currentdate.getFullYear() +" @" + currentdate.getHours() +":" + currentdate.getMinutes() +":" + currentdate.getSeconds(); } <?php $timeString=$_POST["clientDate"]; mysql_query("INSERT INTO Apply (id, user, time_apply) VALUES ('', '$session_user_id', '$timeString')"); ?> <form method="post"> <input type='hidden' id='clientDate' /> <input type="submit" value="submit" id='submitForm' OnClick="submit_OnClick();"/> <!-- The rest of your form goes here --> </form> |
有关更多选项和javascript日期分析,请参阅此相关帖子:
在JavaScript中获取当前日期和时间
丑陋的编码(但这是你想要的):)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | $timeString=' <script language="javascript"> var today = new Date(); var dd = today.getDate(); var mm = today.getMonth()+1; //January is 0! var yyyy = today.getFullYear(); if(dd<10) { dd="0"+dd } if(mm<10) { mm="0"+mm } today = mm+"/"+dd+"/"+yyyy +"" +today.getHours() +":" + today.getMinutes()+":" + today.getSeconds(); document.write(today); '; echo"INSERT INTO `apply` VALUES ('test', '1', '$timeString')"; |
产量
1 | INSERT INTO `apply` VALUES ('test', '1', ' 05/29/2014 22:50:4 ') |
1)您可以将字段(time_apply)声明为TIMESTAMP,而将属性声明为ON UPDATE CURRENT TIMESTAMP,而不是通过PHP添加数据。因此,在添加/编辑数据时,该字段将具有更新的当前时间。
2)否则你可以使用$ timeString = date('Y-m -d H:i:s');插入当前时间的值。
3)否则,您可以在编写脚本时使用NOW()方法为该字段提供值。
您对PHP和JS的运行方式有一个完全的误解。您上面的代码段中没有任何实际的JS代码。你有一个PHP STRING,其中包含一些看起来像Javascript的文本。
但是因为PHP绝对不知道JS是什么,更不用说执行它了,你真的把你的JS代码填充到MySQL作为日期值。 MySQL当然是在说"这到底是什么",并将其丢给默认的"提供的错误日期"值。
记住:PHP在服务器上执行,JS在客户端上执行。
当服务器端数据库完全能够生成自己的日期时,绝对没有理由让客户端生成在服务器端数据库中使用的日期:
1 2 | INSERT ... VALUES(..., now()); ^^^^^---literally all you need. |