当选择子菜单链接时,使父链接显示活动类


make parent links display active class when sub menu link is selected

我有一个CSS/HTML菜单,当li类是active时,它会显示为不同的颜色。

我的菜单链接存储在数据库中,所以我运行SQL查询来显示菜单链接。

我正在努力做到这一点,如果用户在子菜单页面上,它会将顶部链接(父顶部链接)显示为活动。

最好的方法是什么?我试过在顶部链接上做一个if语句,但如果选择了子菜单链接,这就不起作用了

<div id="cssmenu">
<ul>
<li <?php if($_GET["id"] == '') { echo 'class="active"'; } ?>><a href="/home.php"><span>Homepage</span></a></li>
<?php
//select all the top row items
$sql="SELECT * from website_menu where parent_top = '' and parent = '' ";
$rs=mysql_query($sql,$conn) or die(mysql_error());
while($result=mysql_fetch_array($rs))
{
    echo '<li';
    if($_GET["id"] == $result["link"])
    {
        echo ' class="active"';
    }
    echo '><a href="/'.$result["link"].'"><span>'.$result["title"].'</span></a>';
    //then select all the next rows down (parent_top)
    $sql2="SELECT * from website_menu where parent_top = '".$result["sequence"]."' ";
    $rs2=mysql_query($sql2,$conn) or die(mysql_error());
    if(mysql_num_rows($rs2) > 0)
    {
        echo '<ul>';
        while($result2=mysql_fetch_array($rs2))
        {
            echo '<li><a href="/'.$result2["link"].'"><span>'.$result2["title"].'</span></a>';
            //
            $sql3="SELECT * from website_menu where parent = '".$result2["sequence"]."' ";
            $rs3=mysql_query($sql3,$conn) or die(mysql_error());
            if(mysql_num_rows($rs3) > 0)
            {
                echo '<ul>';
                while($result3=mysql_fetch_array($rs3))
                {
                    echo '<li><a href="/'.$result3["link"].'"><span>'.$result3["title"].'</span></a></li>';
                }
                echo '</ul>';
                echo '</li>';
            }
            else
            {
                echo '</li>';
            }
        }
        echo '</ul>';
        echo '</li>';
    }
    else
    {
        echo '</li>';
    }
}
?>
</ul>

首先创建一个变量来查看菜单项是否被选中,并将其设置为false。在开始时的主菜单循环中将其设置为false。然后,在将菜单项打印到子菜单项上的屏幕循环之前,使用子菜单创建一个字符串,并检查其中一个是否在当前页面上。如果其中一个是当前页面,则将所选变量设置为true。在子菜单循环之后,如果菜单项应该有一个附加类,以及您是否可以使用子菜单创建该项,您将有一个变量。

编辑

<div id="cssmenu">
  <ul>
   <li <?php if($_GET["id"] == '') { echo 'class="active"'; } ?>><a href="/home.php><span>Homepage</span></a></li>
<?php
//select all the top row items
$sql="SELECT * from website_menu where parent_top = '' and parent = '' ";
$rs=mysql_query($sql,$conn) or die(mysql_error());
while($result=mysql_fetch_array($rs))
{
  //then select all the next rows down (parent_top)
  $current = false;
  $subMenu = '';
  $sql2="SELECT * from website_menu where parent_top = '".$result["sequence"]."' ";
  $rs2=mysql_query($sql2,$conn) or die(mysql_error());
  if(mysql_num_rows($rs2) > 0)
  {
    $subMenu = '<ul>';
    while($result2=mysql_fetch_array($rs2))
    {
        if($page == $currentPage)
        {
            $current = true;
        }
        $subMenu .= '<li><a href="/'.$result2["link"].'"><span>'.$result2["title"].'</span></a>';
        //
        $sql3="SELECT * from website_menu where parent = '".$result2["sequence"]."' ";
        $rs3=mysql_query($sql3,$conn) or die(mysql_error());
        if(mysql_num_rows($rs3) > 0)
        {
            $subMenu .='<ul>';
            while($result3=mysql_fetch_array($rs3))
            {
                $subMenu .='<li><a href="/'.$result3["link"].'"><span>'.$result3["title"].'</span></a></li>';
            }
            $subMenu .='</ul>';
            $subMenu .='</li>';
        }
        else
        {
            $subMenu .='</li>';
        }
    }
    $subMenu .= '</ul>';
}
    echo '<li';
if($_GET["id"] == $result["link"] || $current)
{
    echo ' class="active"';
}
echo '><a href="/'.$result["link"].'"><span>'.$result["title"].'</span></a>', $subMenu, '</li>';
 }
?>
 </ul>