PHP仅显示第一个子菜单,如果设置了变量,则不显示每个菜单

时间:2012-11-20 12:47:16

标签: php loops

好的,我希望这是有道理的。所以我正在建造一个商店,整个商店的一个不变元素是店边导航。这是一个水平菜单,将主要类别显示为标题。

当您登陆主店铺页面时,它会提示您选择一个类别。在此页面上仅显示主要类别标题,如下所示:

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很新,有人能理解我在说什么并指出我正确的方向吗?提前谢谢。

2 个答案:

答案 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提供给内循环查询。