好的,我希望这是有道理的。所以我正在建造一个商店,整个商店的一个不变元素是店边导航。这是一个水平菜单,将主要类别显示为标题。
当您登陆主店铺页面时,它会提示您选择一个类别。在此页面上仅显示主要类别标题,如下所示:
CAT1 CAT2 CAT3 3,4,5 五类
但是,当您选择一个类别时,它将重定向到该类别页面,侧面导航菜单会稍微改变。并显示该类别的子菜单,仅显示该类别,因此,例如,如果您单击Cat1,它将如下所示:
CAT1 subCat1 subCat2 subCat3 CAT2 CAT3 3,4,5 五类
对基本示例感到抱歉。我的问题是,我似乎无法仅对一个类别进行子菜单循环,要么不显示它们,要么为所有类别循环相同的子菜单。
这是旁边的导航代码:
<div id="shopcontentl">
<div id="shopnavigation">
<?php
$navGet = mssql_query("SELECT * FROM Categories");
while ($navHead = mssql_fetch_array($navGet)) {
?>
<a href="category.php?id=<?php echo $navHead['CatID']; ?>"><?php echo $navHead['CatName']; ?></a>
<?php
if (isset($_GET['id']) && ($_GET['id'] > 0)) {
?>
<div class="subnav">
<?php
$subnavGet = mssql_query("SELECT SubCatName FROM SubCategories WHERE CatID = ".$_GET['id']."");
while ($subnavHead = mssql_fetch_array($subnavGet)) {
?>
<a href="category.php"><?php echo $subnavHead['SubCatName']; ?></a>
<?php
}
?>
</div>
<?php
}
}
?>
</div>
</div>
我很确定我使用了错误的循环,但我对PHP很新,有人能理解我在说什么并指出我正确的方向吗?提前谢谢。
答案 0 :(得分:2)
您需要为特定ID添加条件,如下所示。
if (isset($_GET['id']) && ($_GET['id'] > 0) && ($_GET['id']==$navHead['CatID'])) {
答案 1 :(得分:1)
只需一次更改
<?php
$subnavGet = mssql_query("SELECT SubCatName FROM SubCategories WHERE CatID = ".$navHead['CatID']."");
while ($subnavHead = mssql_fetch_array($subnavGet)) {
?>
它必须用于子类别,因为每当获取一个类别而不是转到内部循环时,它需要特定主类别的主ID。所以我们可以将该id提供给内循环查询。