【发布时间】:2012-04-26 05:38:09
【问题描述】:
你好,我有以下问题:
我想为搜索引擎创建一个过滤器。我有一些用于特定搜索词的输入字段,并且在相应的复选框旁边。所以看起来像:
输入字段 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"/>';
}
?>
什么都不满足。这是因为以下问题:
加载页面时,它会显示所有复选框都未选中。如果我尝试由于没有填写输入或仅选中其中一个过滤器的复选框而导致错误,则在提交后会自动选中所有其他复选框。
所以如果有人可以帮助我,我真的很感激。非常感谢。
【问题讨论】:
标签: php mysql html variables checkbox