我试图弄清楚如何根据表单输入过滤显示或不显示的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?
答案 0 :(得分:0)
嗯,除非你从服务器中提取这些内容,否则我认为你真的不需要PHP。如果是这种情况,那听起来就像你在使用类别做的事情。再想一想,PHP真的不会让它们显示或隐藏,JS或CSS可以做到这一点。
PHP将从服务器引入信息,仅此而已。例如,如果您的数据库中有一个名为“category”的列,则可以使用HTML执行此类操作。
<div id="<?php ** ?>"> CONTENT </div>
**将是提取信息所属类别的信息。从那里,您的JS可以显示/隐藏 - CSS也可以这样做。