我的数据库表有两个字段:id
(int)和state
(枚举 - > 0,1)。
我需要做的是更新我的数据库(我的state
字段),状态为checkbox
(0
为空,1
为已选中状态。
要显示我的数据库中的每个字段,我使用循环:
循环:
<?php
foreach ( $posts_array as $module )
{
?>
<h2><?php echo $module->titre; ?></h2>
<input type="checkbox" name="chkbx_<?php echo $module->id; ?>"> id="chkbx_<?php echo $module->id; ?>" class="onoffswitch-checkbox"> On/Off <br />
<?php
}
?>
我的更新文件:
foreach ($_GET['onoffswitch-checkbox'] as $id => $state)
{
// $_GET['onoffswitch-checkbox'] = class for all my checkboxed
// $id = my database row id
// $state = on/off
$query = mysql_query("UPDATE records SET id='$id' WHERE state='$state'", $conn) or die (mysql_error($conn));
$id++;
}
我需要帮助的地方是代码的AJAX部分。我猜它看起来像这样,但它似乎不起作用:
AJAX
$(document).ready(function() {
$("onoffswitch-checkbox").click(function() {
var id = $(this).attr('id');
$("#state_span").load("module_update.php?"+id);
}
}
我一直在环顾四周,看了几个例子,我们可以通过提交按钮来实现,但没有一个例子,单击复选框时会自动记录信息。
答案 0 :(得分:1)
试试这个:
<强> AJAX 强>
$(document).ready(function() {
$(".onoffswitch-checkbox").click(function() {
var id = this.id; //changed here also, just because jQuery is not needed here
var state = this.checked ? 1 : 0;
$("#state_span").load("module_update.php?id="+id+"&state="+state);
}
}
更改了3件事:
$("onoffswitch-checkbox")
中添加了一个点,因此现在$(".onoffswitch-checkbox")
id=
之后和module_update.php?
值之前添加了id
。state
,我还添加了&
来分隔php中$_GET
的值以将它们分开PHP
我不知道你在php中使用$_GET['onoffswitch-checkbox']
是什么意思,也许是个错误?我的建议无论如何都不需要它,你的mysql查询也没有。
由于您一次只点击一个,我认为不需要php中的foreach
循环,所以你可以这样做:
$id = $_GET['id'];
$state= $_GET['state'];
// $_GET['onoffswitch-checkbox'] ?? I don't think you need this...
// $id = my database row id
// $state = on/off
$query = mysql_query("UPDATE records SET id='$id' WHERE state='$state'", $conn) or die (mysql_error($conn));
$id++;