我正在为我正在处理的项目创建一个管理面板。它将在表中列出一堆条目,每行中都有一个复选框。此复选框将用于激活要在网站上显示的条目。
我正在使用MySQL数据库中的数据设置复选框的id
和name
。例如..
<input type="checkbox" class="active" name="active<?php echo $id; ?>" id="active<?php echo $id; ?>" <?php if ($active == 1): ?>checked="checked"<?php endif; ?> value="<?php echo $id; ?>">
对于ID为5的条目,它将如下所示..
<input type="checkbox" class="active" name="active5" id="active5" checked="checked" value="5">
我需要对此进行设置,以便在您选中一个复选框或取消选中它时,它会更新&#34;活动&#34;数据库中的值。如何在单击时获取每个复选框的值,并将该值发送到MySQL数据库。如果我事先知道复选框name
,我可以很容易地做到这一点,但由于name
部分是从数据库生成的,我不知道如何编写代码来确定哪个条目变为活动状态值。
这是我的jQuery ..
$("input.active").click(function() {
// store the values from the form checkbox box, then send via ajax below
var check_active = $(this).is(':checked') ? 1 : 0;
var check_id = $(this).attr('value');
console.log(check_active);
console.log(check_id);
$.ajax({
type: "POST",
url: "http://nowfoods.marketspacecom.com/nextstep/ajax.php",
data: {id: check_id, active: check_active},
success: function(){
$('form#submit').hide(function(){$('div.success').fadeIn();});
}
});
return true;
});
这是PHP ..
<?php
include("dbinfo.inc.php");
mysql_connect($server,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
// CLIENT INFORMATION
$active = mysql_real_escape_string($_POST['active']);
$id = mysql_real_escape_string($_POST['id']);
$addEntry = "UPDATE entries SET active = '$active' WHERE id = '$id'";
mysql_query($addEntry) or die(mysql_error());
mysql_close();
&GT;
答案 0 :(得分:1)
这是错误的:
var active = $('#active').attr('value');
你需要检查点击的元素,你必须检查它是否被检查(除非你用它来传递ID,否则这个值并不重要):
var active = $(this).is(':checked'); // the checkbox is checked (boolean)
您可以将其设置为整数值,如:
var active = $(this).is(':checked') ? 1 : 0;
简称:
if ($(this).is(':checked')) {
var active = 1;
} else {
var active = 0;
}
在php中,您需要正确处理用户输入:
$active = (int) $_POST['active'];
修改:您的编辑后的代码中似乎没有空格,设置时是否有效:
...
data: {"active=": check_active, "id": check_id},
...
此外,由于两个值都是整数/应该是整数,因此没有真正使用字符串函数为数据库转义它们,您应该测试整数或至少将它们转换为整数:
// CLIENT INFORMATION
$active = (int) $_POST['active'];
$id = (int) $_POST['id'];
答案 1 :(得分:1)
您可以在输入中添加一个类,并将值设置为id:
<input class="active" type="checkbox" name="active5" id="active5" value="5" checked="checked">
然后,更改你的jQuery:
$("input.active").click(function() {
// store the values from the form checkbox box, then send via ajax below
var check_active = $(this).is(':checked') ? 1 : 0;
var check_id = $(this).attr('value');
$.ajax({
type: "POST",
url: "http://nowfoods.marketspacecom.com/nextstep/ajax.php",
data: {id: check_id, active: check_active}
success: function(){
$('form#submit').hide(function(){$('div.success').fadeIn();});
}
});
return true;
});
至于PHP:
<?php
include("dbinfo.inc.php");
mysql_connect($server,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
// CLIENT INFORMATION
$active = mysql_real_escape_string($_POST['active']);
$id = mysql_real_escape_string($_POST['id']);
// WHERE id=16 is just for testing purposes. Need to dynamically find which checkbox was checked and use that info to tell the query which ID to update.
$addEntry = "UPDATE entries SET active = '$active' WHERE id = '$id'";
mysql_query($addEntry) or die(mysql_error());
mysql_close();
?>
这应该是你正在寻找的。可能会有一些轻微的语法问题,因为我正在写下这个问题,但我希望你能得到一般的想法。 : - )