Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP仅显示第一个子菜单,如果变量设置为,则每个菜单不显示一个子菜单_Php_Loops - Fatal编程技术网

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

PHP仅显示第一个子菜单,如果变量设置为,则每个菜单不显示一个子菜单,php,loops,Php,Loops,好的,我希望这是有意义的。因此,我正在建立一个店铺,整个店铺的一个恒定要素是店铺侧导航。这是一个水平菜单,将主要类别显示为标题 当您登陆主商店页面时,它将提示您选择一个类别。在此页面上仅显示主要类别标题,如下所示: 第一类 第二类 第三类 第四类 第五类 但是,当您选择一个类别时,它将重定向到该类别页面,并且侧面导航菜单将略有更改。并显示该类别的子菜单,并且仅显示该类别,因此,例如,如果单击Cat1,它将如下所示: 第一类 子目录1 副2 次级T3 第二类 第三类 第四类 第五类 对于基本示例,

好的,我希望这是有意义的。因此,我正在建立一个店铺,整个店铺的一个恒定要素是店铺侧导航。这是一个水平菜单,将主要类别显示为标题

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

第一类 第二类 第三类 第四类 第五类

但是,当您选择一个类别时,它将重定向到该类别页面,并且侧面导航菜单将略有更改。并显示该类别的子菜单,并且仅显示该类别,因此,例如,如果单击Cat1,它将如下所示:

第一类 子目录1 副2 次级T3 第二类 第三类 第四类 第五类

对于基本示例,我很抱歉。我的问题是,我似乎不能只为一个类别创建子菜单循环,或者它们中的一个不显示,或者为所有类别创建相同的子菜单循环

这是旁边的导航代码:

<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还是相当陌生的,有人能理解我的意思并为我指出正确的方向吗?提前感谢。

您需要为特定id添加条件,如下所示

if (isset($_GET['id']) && ($_GET['id'] > 0) && ($_GET['id']==$navHead['CatID'])) {

您需要为特定id添加条件,如下所示

if (isset($_GET['id']) && ($_GET['id'] > 0) && ($_GET['id']==$navHead['CatID'])) {
只要一个变化

<?php
$subnavGet = mssql_query("SELECT SubCatName FROM SubCategories WHERE CatID = ".$navHead['CatID']."");
while ($subnavHead = mssql_fetch_array($subnavGet)) {
?>

它对于子类别是必须的,因为无论何时获取一个类别并转到内部循环,它都需要特定主类别的主id。因此,我们可以将该id提供给内部循环查询。

只需一个更改

<?php
$subnavGet = mssql_query("SELECT SubCatName FROM SubCategories WHERE CatID = ".$navHead['CatID']."");
while ($subnavHead = mssql_fetch_array($subnavGet)) {
?>


它对于子类别是必须的,因为无论何时获取一个类别并转到内部循环,它都需要特定主类别的主id。因此,我们可以将该id提供给内部循环查询。

非常有效,谢谢+我会尽我所能接受的。不确定谁投了反对票,但我想知道一个解释。只有当循环中的当前类别和当前类别页面的id相同时,才需要显示子菜单。Daxen的解决方案也是正确的。非常有效,谢谢+我会尽我所能接受的。不知道是谁投了反对票,但我想知道一个解释。只有当循环中的当前类别和当前类别页面的id相同时,才需要显示子菜单。Daxen的解决方案也是正确的。