我正在使用实时复选框,因此当我需要将一个复选框置于ON(1)或OFF(0)时,该复选框会立即更新数据库中的值,并且一切正常。但是现在我正在使用一个实时复选框。用户列表(我现在已经有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'>×</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'>×</button>
the ban is on!
</div>";
}catch(PDOException $exception){
echo "Error: " . $exception->getMessage();
}
}
$dbh = null;
?>
最佳答案
仅提交最后一个的原因是因为您不能将相同的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加载器,但这不在此问题的范围内。