2

我的数据库表有 2 个字段:id(int) 和state(enum -> 0,1)。

我需要做的是用state状态更新我的数据库(我的字段)checkbox0对于空,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); 
    }
}

我一直在环顾四周,看到了一些我们可以使用提交按钮执行此操作的示例,但没有一个示例在单击复选框时会自动记录信息。

4

1 回答 1

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还需要我添加了一个&来分隔$_GETphp 中的值来分隔它们

PHP

我不知道你$_GET['onoffswitch-checkbox']在php中的意思,也许是一个错误?我的建议无论如何都不需要,你的mysql查询也不需要。

由于您一次只单击一个,我认为foreachphp 中不需要循环,因此您可以这样做:

$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++;
于 2013-09-09T19:22:39.640 回答