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

时间:2013-08-30 12:01:29

标签: php html css

我有一个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>

1 个答案:

答案 0 :(得分:1)

首先创建一个变量以查看是否选择了菜单项并将其置于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>