javascript - 带有多个复选框的数据表数据过滤(服务器端)
问题描述
我正在使用带有服务器端处理的 DataTables 来显示数万行。我需要通过复选框过滤这些数据。我能够制作一个工作正常的复选框,但我不知道如何添加多个复选框以协同工作。我在这里找到了类似的解决方案,但是我的技能不允许我根据需要对其进行修改:(这是我尝试过的..
我的 index.php:
Statuses:<br>
<input type="checkbox" id="0" onclick="myCheckFunc()" name="statuses">Open<br>
<input type="checkbox" id="1" onclick="myCheckFunc()" name="statuses">Closed<br>
<input type="checkbox" id="2" onclick="myCheckFunc()" name="statuses">Solved<br>
<script>
var idsa = 5;
$('input[name=statuses]').click(function(){
idsa = [];
$('input[name=statuses]:checked').each(function() {
idsa.push($(this).attr('id'));
});
idsa = idsa.join(",");
console.log("idsa fcia: " + idsa);
$('#example').DataTable().ajax.reload();
});
</script>
idsa 变量最初设置为 5,这意味着所有状态(未选中复选框)然后使用它的 format(d) 函数发送到服务器端脚本(这部分工作正常)。这就是我在服务器端脚本中修改 sql 查询的方式:
if ($_GET['idsa'] == 5){
$idsa = "0,1,2";
} else { if (isset($_GET['idsa'])) {
$idsa = "('" . str_replace(",", "','", $_GET['idsa']) . "')"; }
}
$whereAll = "STATUS IN ($idsa)";
编辑:现在点击这三个复选框中的第一个后,数据被正确过滤(打开状态为 0 的票证),但取消选中不要带回所有数据的初始状态。当我点击其他两个时,数据会被过滤,但是当我取消选中时,数据会被第一个过滤器(打开)过滤。当我单击两个或更多复选框时,我收到此错误:
发生 SQL 错误:SQLSTATE[21000]:基数违规:1241 操作数应包含 1 列
解决方案
好的,这是工作代码:
Status:<br>
<input type="checkbox" id="0" name="statuses">Open<br>
<input type="checkbox" id="1" name="statuses">Closed<br>
<input type="checkbox" id="2" name="statuses">Solved<br>
<script>
var idsa = 5;
$('input[name=statuses]').click(function(){
idsa = [];
$('input[name=statuses]:checked').each(function() {
idsa.push($(this).attr('id'));
});
idsa = idsa.join(",");
console.log("idsa fcia: " + idsa);
if (idsa == '') {
idsa = 5;
}
$('#example').DataTable().ajax.reload();
});
</script>
在服务器端脚本中:
if ($_GET['idsa'] == 5){
$idsa = "0,1,2";
} else {
$idsa = $_GET['idsa'];
}
$whereAll = "STATUS IN ($idsa)";
问题出在我从其他人那里获取的服务器端部分,并添加了另一个逗号。现在它工作正常。非常感谢您的宝贵时间。
推荐阅读
- javascript - SyntaxError: Unexpected identifier:new.mongoose.Schema is not working
- javascript - 如何在jstree中单独搜索第n个孩子
- android - 如何在 Android 应用程序中包含不同的语言
- excel - 时间自动刷新
- wordpress - 在媒体 wp api 中上传图片
- c - 我打印学生详细信息的 c 程序不起作用
- python - 在 Django 的详细视图中获取方法
- sql - 如果我对另一个表执行 INNER JOIN,为什么一个表的 SUM 会上升?
- fortran - 在 Fortran 中生成随机数
- php - PhpStorm 无法与 Xdebug 3 一起使用:已配置但 PhpStorm 未检测到 Xdebug