You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

表单过滤器页面冻结问题求助:单列复选框勾选正常,跨列勾选即无响应

问题原因

你的代码存在多处变量名、参数名拼写不匹配的错误,触发PHP运行报错后和你绑定的复选框自动提交逻辑形成死循环,最终导致页面冻结,具体错误如下:

  • 遍历变量名不存在:你定义的区域数组是$sect,但循环写的是foreach($sects as $sect),遍历了未定义的$sects变量;同理你定义的房型数组是$room,但循环写的是foreach($rooms as $room),遍历了未定义的$rooms变量。
  • 取值变量名错乱:区域循环内取值用了未定义的$dept变量,应该用循环当前项$sect;房型循环内取值用了未定义的$role变量,应该用循环当前项$room。
  • 参数名不匹配:区域复选框提交的参数名是sections[],但你in_array判断时写的是$_GET['section'](少了末尾的s);房型复选框提交的参数名是rooms[],但你isset判断时写的是isset($_GET['roles']),和实际参数完全不匹配。

修正后代码

<form class="filters" action="">

    <!-- <select name="orderby" id="orderby">
        <option value="date"> New To Old </option>
        <option value="title"> Alphabetical </option>

    </select> -->
    <div>
        <!-- <input type="hidden" name="orderby" value="title" />
        <input type="hidden" name="order" value="ASC" /> -->

        <h4>Sections</h4>

        <?php 
            $sects = [
                // [ 'room' => '000', 'title' => 'All' ],
                [ 'room' => '1', 'title' => 'Up Stairs' ],
                [ 'room' => '23', 'title' => 'Down Stairs' ],
                [ 'room' => '347', 'title' => 'Basement' ],
            ];
            
            $rooms = [
                // [ "value" => 'All'      , "label" => 'All' ],
                [ "value" => 'Bathroom'  , "label" => 'bathroom' ],
                [ "value" => 'Closet'    , "label" => 'closet' ],
                [ "value" => 'Supplies', "label" => 'supplies' ],
            ];

            foreach($sects as $sect) : ?>
            
                <label>
                    <input class="section-checkbox"
                    <?php echo checked( 
                        isset($_GET['sections']) && in_array($sect["room"], $_GET['sections']) );
                    
                    ?>
                    type="checkbox" name="sections[]" value="<?php echo $sect["room"];?>" />
                    <?php echo $sect["title"];?>
                </label>
            <?php endforeach; ?>

        </div>

        <div>
        <h4>Room Types:</h4>


        <?php foreach($rooms as $room) : ?>
            
            <label>
                <input class="role-checkbox"
                <?php echo checked( 
                    isset($_GET['rooms']) && in_array($room["value"], $_GET['rooms']) );
                
                ?>
                type="checkbox" name="rooms[]" value="<?php echo $room["value"];?>" />
                <?php echo $room["label"];?>
            </label>
        <?php endforeach; ?>
        </div>
        <hr />
        
</form>

内容的提问来源于stack exchange,提问作者paulwk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 18:42:04