php - 为什么我的页面使用表单过滤器冻结
问题描述
我在表单页面上设置了过滤器,导致页面冻结。有两个带有复选框的过滤器。只要我只选择一列中的复选框就可以了。但是,一旦我尝试单击另一个过滤器列中的复选框,页面就会冻结。代码如下。谁能看到我做错了什么?
<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
$sect = [
// [ 'room' => '000', 'title' => 'All' ],
[ 'room' => '1', 'title' => 'Up Stairs' ],
[ 'room' => '23', 'title' => 'Down Stairs' ],
[ 'room' => '347', 'title' => 'Basement' ],
];
$room = [
// [ "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['section']) );
?>
type="checkbox" name="sections[]" value="<?php echo $dept["room"];?>" />
<?php echo $dept["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['roles']) && in_array($room["value"], $_GET['rooms']) );
?>
type="checkbox" name="rooms[]" value="<?php echo $role["value"];?>" />
<?php echo $role["label"];?>
</label>
<?php endforeach; ?>
</div>
<hr />
</form>
解决方案
对于您的情况,您已经定义了 $sect和$room,但是您正在使用:
foreach($sects as $sect)
foreach($rooms as $room)
相反,您应该使用类似以下的方法来进行迭代:
foreach($sect as $indsect)
foreach($room as $indroom)
之后,您可以使用 $indsect 和 $indroom 作为数组在迭代期间进一步处理您想要的内容。
因此,结构应该是这样的:
<form class="filters" action="">
<div>
<h4>Sections</h4>
<?php
$sect = [
[ 'room' => '1', 'title' => 'Up Stairs' ],
[ 'room' => '23', 'title' => 'Down Stairs' ],
[ 'room' => '347', 'title' => 'Basement' ],
];
$room = [
[ "value" => 'Bathroom' , "label" => 'bathroom' ],
[ "value" => 'Closet' , "label" => 'closet' ],
[ "value" => 'Supplies', "label" => 'supplies' ],
];
foreach($sect as $indsection) : ?>
<?php
/// do whatever you want in the iteration, like:
echo $indsection['room'];
echo "<br>";
?>
<?php endforeach; ?>
</div>
<div>
<h4>Room Types:</h4>
<?php foreach($room as $indroom) : ?>
<?php
/// do whatever you want in the iteration, like:
echo $indroom['value'];
echo "<br>";
?>
<?php endforeach; ?>
</div>
<br>
<hr />
</form>
推荐阅读
- list - 将“Textarea”对象从 iPython wigdet 转换为列表或可迭代数组
- java - Java - 访问类变量
- node.js - Knex.js:如何使用 for 循环插入多个数据?
- python - Python中的高效时间限制队列?
- python-2.7 - pip install ansible 目录所有者错误
- c++ - ThreadSanitizer 只打印 2 帧
- apache-spark - Spark 如何与 JDBC 连接一起工作?
- javascript - 如何让 HTML 视频背景立即播放?
- javascript - 如何通过 id/key 从 sessionStorage 访问记录?
- mysql - MySQL 未处理的拒绝错误,无默认值