0

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

1 回答 1

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>
于 2013-08-30T12:12:35.293 回答