以 HTML 形式更新 MySQL 行的 jQuery datepicker
Posted
技术标签:
【中文标题】以 HTML 形式更新 MySQL 行的 jQuery datepicker【英文标题】:jQuery datepicker in HTML form to update MySQL rows 【发布时间】:2016-12-22 04:45:55 【问题描述】:我已经对这个主题进行了大量研究,但由于某种原因没有任何效果!
我想使用 datepicker 小部件更新 mysql 中的一行(它有一个日期列)。出于某种原因,每当我尝试更新行(适用于其他输入内容)时,它都会在我的 MySQL 表 0000-00-00 中显示 ??
这是我的 jQuery 代码:
<script>
$( function()
$( "#datepicker" ).datepicker(
dateFormat:"yy-mm-dd",
altField: "#alternate",
altFormat: "DD, d MM, yy"
);
$( "#selectable" ).selectable();
);
</script>
还有我的 html:
<p> Date: <input name="slot_date" id="datepicker" > <input type="text" id="alternate" size="30"></p>
我的 php:
if( isset($_POST['btn-book']) )
$slot_date = date('yy-mm-dd',strtotime($_POST['slot_date']));
$slot_line=$_POST['slot_line'];
$reason=$_POST['reason'];
$id=$_POST['id'];
$sql="UPDATE appointments SET slot_date='$slot_date', slot_line='$slot_line', reason='$reason' WHERE id='$id'";
$result=mysql_query($sql);
if($result)
header ("Location: homepage_loggedin_book_success.php");
else
echo "ERROR";
无论如何,我已经尝试了很长时间,但日期选择器不会进入我的 MySql 表??
【问题讨论】:
某些日期选择器插件使用不同形式的隐藏名称,尝试 print_r($_POST) 看看是否有任何替代日期字段隐藏;或者,回显 $sql,查看 $slot_date 实际传入的内容 为 $slot_date 和其他东西发布更多你的 php。 看起来实际日期被隐藏为#alternate。当您选择日期时,您的#datepicker 字段日期格式是什么样的:yy-mm-dd 或 DD、d MM、yy?这两种格式都将在 mysql 中转换为 0000-00-00。 mysql 的有效默认数据格式将是 YYYY-mm-dd 否则您需要转换 【参考方案1】:使用strtotime() 和date() 强制执行您想要的格式。
$slot_date = date('Y-m-d',strtotime($slot_date)); # will output 2016-08-16
$sql="UPDATE appointments SET slot_date='$slot_date', slot_line='$slot_line', reason='$reason' WHERE id='$id'";
您的代码可能容易受到 SQL 注入的影响。请参考http://php.net/manual/en/security.database.sql-injection.php。
【讨论】:
【参考方案2】:在创建记录的原始表单中,所有设置是否正确? slot_line
和 reason
字段是否正确更新?如果它们不是问题可能出在您的 PHP 中。您能否发布更多上下文的 PHP 代码?
【讨论】:
除“slot_date”之外的所有内容都正确更新。我发布了更多我的 PHP 代码,但其中的所有内容都与日期无关以上是关于以 HTML 形式更新 MySQL 行的 jQuery datepicker的主要内容,如果未能解决你的问题,请参考以下文章