你好我有以下问题:
我想为搜索引擎创建一个过滤器。我有一些用于特定搜索词的输入字段,并且在相应的复选框旁边。所以看起来像:
输入字段 a:[ _ ____ ] 过滤器 a:开/关:[ ]
输入字段 b:[ _ ____ ] b 的过滤器:开/关:[ ]
输入字段 c:[ _ ____ ] c 的过滤器:开/关:[ ]
它的代码结构是:
首先检查输入字段是否为空并且复选框是否设置为选中状态。如果选中,提交后将取消选中。反之,如果只填写了输入字段并且未选中复选框,它也会出错,即出现错误并且过滤器无法工作。所以我为每个过滤器使用一个自己的错误数组,如(the name and value of the first checkbox is name="filter_a" value="1")
:
...
$checkbox_filter_a = $db->real_escape_string(htmlentities(trim($_POST['filter_a'])));
...
$filter_a = (!empty($checkbox_filter_a)) ? 1 : 0;
...
$errors_a = array();
if ($filter_a == 1){
if (empty($input_a)){
$errors_a[] = 'the filter needs some input';
}
}
if (!empty($input_a)){
if ($filter_a == 0){
$errors_a[] = 'filter is not activated';
}
}
如果没有错误并且两个条件都满足,则过滤器打开或不打开。所以这背后的逻辑是,在加载页面时,必须取消选中复选框。在关于过滤它的标准之后。
要在以下条件下显示已选中或未选中的状态,应在提交后选中或不选中。因此,我为每个过滤器(各自的 checkbox_filter_b,...)在输入字段之后的复选框部分都有此代码:
<?php
if (checkbox_filter_a == 0 ) {
echo '<input type="checkbox" name="checkbox_filter_a" value="1" checked/>';
}else {
echo '<input type="checkbox" name="checkbox_filter_a" value="1"/>';
}
?>
什么都不满足。这是因为以下问题:
加载页面时,它将显示所有复选框均未选中。如果我因为没有填写输入或仅选中其中一个过滤器的复选框而尝试导致错误,则在提交后会自动选中所有其他复选框。
所以如果有人可以帮助我,我真的很感激。多谢。