按ID保存多个复选框

时间:2014-09-17 17:13:42

标签: javascript jquery checkbox

我正在使用live复选框,所以当我需要立即将ON(1)或OFF(0)一个复选框时,复选框更新数据库中的值,一切正常......但现在我正在使用live用户列表中的复选框(我现在已经拥有100个用户)...所以问题是当我试图禁止某人时,复选框只适用于最后一个而不是其他用户...可以你能帮帮我吗?

以下是表格:

<form class="form-horizontal" method="post" name="ban" id="ban">
     <input type="hidden" name="id" value="<?php echo $row['id']; ?>">
     <?php if ($row['banned'] == '1') { 
         echo '<input type="checkbox" name="banned" data-no-uniform="true" class="iphone-toggle" value="on" checked>';
         } else {
         echo '<input type="checkbox" name="banned" data-no-uniform="true" class="iphone-toggle" value="off" >';
         } ?>
</form>
<div id="gif" style="display:none;" align="center"><img src="img/ajax-loaders/ajax-loader-1.gif" /></div>

JS:

$("#ban").click(function(){
  $.ajax({
    type:"POST",
    url:"includes/ban.php?ts=" + new Date().getTime(),
    dataType:"text",
    data:$(this).serialize(),
    beforeSend:function(){
      $("#gif").show();
    },
    success:function(response){
        $("#gif").hide();
    } 
  })
  return false;
});

这是DB的代码:

<?php
include('con.php');
if($_POST['banned']==on) {
    try{
        $id = $_POST['id'];
        $banned = '0';
        $sql = "UPDATE BANS SET 
        banned = :banned
        WHERE id= :id";
        $stmt = $conn->prepare($sql);
        $stmt->bindParam(':banned', $banned, PDO::PARAM_STR);
        $stmt->bindParam(':id', $id, PDO::PARAM_INT);
        $stmt->execute();
        echo "<div class='alert alert-block alert-success fade in'>
                <button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;</button>
                the ban is off!.
            </div>";
    }catch(PDOException $exception){ 
        echo "Error: " . $exception->getMessage();
    }
} else {
    try{
        $id = $_POST['id'];
        $banned = '1';
        $sql = "UPDATE BANS SET 
        banned = :banned
        WHERE id= :id";
        $stmt = $conn->prepare($sql);
        $stmt->bindParam(':banned', $banned, PDO::PARAM_STR);
        $stmt->bindParam(':id', $id, PDO::PARAM_INT);
        $stmt->execute();
        echo "<div class='alert alert-block alert-danger fade in'>
                <button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;</button>
                the ban is on!
            </div>";
    }catch(PDOException $exception){ 
        echo "Error: " . $exception->getMessage();
    }
}
$dbh = null;
?>

1 个答案:

答案 0 :(得分:2)

仅提交最后一个的原因是因为您无法为多个元素分配相同的ID。

更改:<form class="form-horizontal" method="post" name="ban" id="ban">

收件人:<form class="form-horizontal ban" method="post">

然后将您的jQuery选择器更新为$("form.ban")

最后,在你的PHP中:if($_POST['banned']==on) { 应该是:if($_POST['banned']=='on') {

编辑:作为旁注,同样的问题会影响AJAX加载器GIF,再假设你在每一行都有一个AJAX加载器,但这不在这个问题的范围内。