【发布时间】:2015-05-26 04:26:52
【问题描述】:
我试图弄清楚如何根据表单输入过滤要显示或不显示的 div 页面。这类似于文章页面,因为每个 div 都显示一张图片和一些链接到整篇文章的文本。这是在页面的顶部:
<form method="POST" action="">
Team:
<select value="team">
<option>Any</option>
<option>A</option>
<option>B</option>
</select>
Map:
<select value="map">
<option>Any</option>
<option>A</option>
<option>B</option>
</select>
Site:
<select value="site">
<option>Any</option>
<option>A</option>
<option>B</option>
</select>
<input type="submit" value="Filter Content">
</form>
在页面的主要部分,每个 div 看起来像这样,具有相同的“item”类。
<div class="item">
<?php
$info = array("A", "B", "A");
$display = "block";
?>
<div style="display:<?$display?>">
<p>text text text</p>
</div>
</div>
请记住,同一类中连续有多个 div。我给每个 div 一个 $info 数组,用于比较表单输入。但是,我无法弄清楚如何比较两者。我只是将 $display 变量更改为“none”或“block”,具体取决于 $info 变量和表单输入是否匹配。
这是我最麻烦的地方...我不明白如何解析页面中的每个 div。
if(isset($_POST['submit']))
{
$filter = array($_POST['team'], $_POST['map'], $_POST['site']);
$html = file_get_contents('example.php');
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$divContent = $xpath->query('//div[id="item"]');
foreach ($divContent as $div)
{
if ($filter != $div->$info)
{
$div->$display = "none";
}
}
}
我意识到代码有一些错误,但是由于我正在学习 PHP,所以我不知道要更改什么。那么,如何通过比较分配给每个 div 的数组来过滤 div 以显示/不显示?
【问题讨论】: