0

我的系统前端有几个复选框,用户选中这些复选框以从数据库结果中过滤结果。有 6 个复选框。

在数据库中,每个配置文件都可以分配一个或多个复选框值,因此通过单击复选框,用户可以过滤许多配置文件,并且每个配置文件都必须包含当前选中的复选框。

我的问题是我有一半的工作,但似乎无法弄清楚如何完成它的逻辑。那里似乎仍然有不匹配的值:

        $pieces = explode(", ", $row['competency']);
        foreach(array_keys($_POST['competencyFilter']) as $filter){ //each chosen
            if(in_array($filter, $pieces)){ //if this chosen is in the db
                if(in_array($row['ID'], $resultList)){
                }else{
                    $resultList[] = $row['ID'];
                }
            }else{
                if(($key = array_search($row['ID'], $resultList)) !== false) {
                    unset($resultList[$key]);
                }
                //continue 2;
            }   
        }

我不确定这里的逻辑对于我想要的是否过于复杂,但目前它循环遍历复选框中当前勾选的所有值,并且对于每个值,如果它存在于配置文件中,它会将配置文件 ID 添加到数组。

问题是一些配置文件 ID 保留在最终数组 $resultList[] 中,即使勾选了不在该配置文件中的复选框。

我希望这是有道理的...

编辑

这是存储在数据库中的每个配置文件中的数组数据(显然每个配置文件将包含不同的值,但总共有 6 个):

thermXMbb, thermXPbb, thermXMrf, thermXPrf, .. , ..

总共有 6 个,还有 6 个复选框,每个复选框一个。

4

0 回答 0