【发布时间】:2014-04-07 14:52:31
【问题描述】:
我正在编写一段代码,但我无法让它工作。
我有这些复选框,当我选中它们时,列表会被过滤,屏幕会使用 AJAX 实时更新。多重过滤有效,但前提是信息仍在屏幕上。一旦它被过滤掉,它就不会再回来了。我有很多这样的说法。我需要添加 If / Else 语句吗?
<?php
$pdo = new PDO('mysql:host=localhost;dbname=records', 'root', '*******');
$select = 'SELECT *';
$from = ' FROM overboekingen';
$where = ' WHERE TRUE';
$opts = isset($_POST['filterOpts'])? $_POST['filterOpts'] : array('');
if (in_array("coulance_happyhome1", $opts)){
$where .= " AND coulance_happyhome = 1";
}
if (in_array("coulance_happyhome2", $opts)){
$where .= " AND coulance_happyhome = 2";
}
if (in_array("coulance_happyhome3", $opts)){
$where .= " AND coulance_happyhome = 3";
}
if (in_array("coulance_happyhome4", $opts)){
$where .= " AND coulance_happyhome = 4";
}
if (in_array("coulance_happyhome5", $opts)){
$where .= " AND coulance_happyhome = 5";
}
$sql = $select . $from . $where;
$statement = $pdo->prepare($sql);
$statement->execute();
$results = $statement->fetchAll(PDO::FETCH_ASSOC);
$json = json_encode($results);
echo($json);
?>
</td>
<td class="tdfilter">
<label for="coulance_happyhome"><h4>Coulance Happyhome</h4></label>
<input type="checkbox" id="coulance_happyhome" name="coulance_happyhome1">Coulance Agent<br>
<input type="checkbox" id="coulance_happyhome" name="coulance_happyhome2">Coulance Camping<br>
<input type="checkbox" id="coulance_happyhome" name="coulance_happyhome3">Coulance Park<br>
<input type="checkbox" id="coulance_happyhome" name="coulance_happyhome4">Coulance Privatowner<br>
<input type="checkbox" id="coulance_happyhome" name="coulance_happyhome5">Coulance HappyHome<br>
</td>
<td class="tdfilter">
<label for="opmerking"><h4>Opmerking</h4></label>
<input type="checkbox" id="opmerking" name="opmerking">
</td>
</tr>
</table>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
function makeTable(data){
var tbl_body = "";
$.each(data, function() {
var tbl_row = "";
$.each(this, function(k , v) {
tbl_row += "<td>"+v+"</td>";
})
tbl_body += "<tr>"+tbl_row+"</tr>";
})
return tbl_body;
}
function getEmployeeFilterOptions(){
var opts = [];
$checkboxes.each(function(){
if(this.checked){
opts.push(this.name);
}
});
return opts;
}
function updateEmployees(opts){
$.ajax({
type: "POST",
url: "submit.php",
dataType : 'json',
cache: false,
data: {filterOpts: opts},
success: function(records){
$('#employees tbody').html(makeTable(records));
}
});
}
var $checkboxes = $("input:checkbox");
$checkboxes.on("change", function(){
var opts = getEmployeeFilterOptions();
updateEmployees(opts);
});
updateEmployees();
【问题讨论】:
-
我们肯定需要在这里查看更多代码。您可以发布带有复选框的表单以及更多相关的过滤代码吗?
-
添加了一些代码:)
-
我认为您的 opts 数组正在构建中,但从未减少。您可以在您的 checkboxes.onChange 函数中添加一个 console.log 语句,并在您过滤结果时观察 opts 的值吗?
-
还在吗?我在那里发布了另一个答案......你试过了吗?
-
您应该使用 2 个单独的文件,在第一个 php 文件中,您应该保留名称为 submit.php 的 php 脚本,并在其他页面中保留所有其余代码,如 html 和 ajax 代码,然后您的代码将正常工作正确,因为我认为您的 submit.php 页面定义不正确,因此您没有得到任何输出。
标签: php mysql ajax json checkbox