使用PHP和MYSQL的CSS活动页面


Active Page for CSS using PHP and MYSQL

我正在尝试使用PHP和MySQL为CSS构建一个带有活动页面元素的菜单。

这个例子PHP/HTML混合工作,也是我试图模仿的。

<nav><ul>
<li<?php if ($thisPage == "1") echo " class='"active'""; ?>><a href="pg1.php">page 1</a></li>
<li<?php if ($thisPage == "2") echo " class='"active'""; ?>><a href="pg2.php">page 2</a></li>
<li<?php if ($thisPage == "3") echo " class='"active'""; ?>><a href="pg3.php">page 3</a></li>
</nav></ul>

我想混合这个语句来设置活动类:

<?php if ($thisPage == $menuID) echo " class='"active'""; ?>

进入这个无序列表语句

<?php 
echo "'n<nav>'n";
echo "<ul>'n";
        while($row_rsMenu = mysql_fetch_assoc($rsMenu)) 
{   
echo "<li>" .  "<a href='"" . $row_rsMenu['menuURL'] . "'">" . $row_rsMenu['menuName'] . "</a></li>'n"; 
}   
echo "</ul>'n";
echo "</nav>'n";
?>

这就是我所处的位置,但我似乎无法使语法正确工作。

echo "<li" .  "if(" . $thisPage==$menuID . ")".  echo ' class='"active'"';" . ">" .  "<a href='"" . $row_rsMenu['menuURL'] . "'">" . $row_rsMenu['menuName'] . "</a></li>'n"; 

如果有人能帮我了解哪里出了问题,我将不胜感激。

您的if语句封装在引号中。这意味着PHP不会解释它,而是将它与HTML一起打印出来。

类似的东西会更好地工作:

    echo "'n<nav>'n";
    echo "<ul>'n";
    while($row_rsMenu = mysql_fetch_assoc($rsMenu)) 
    {  
        $active = ""; //not active by default
        if($thisPage==$menuID){
            $active = ' class="active" ';
        }
        echo "<li>" .  "<a href='"" . $row_rsMenu['menuURL'] . "'"".$active.">" . $row_rsMenu['menuName'] . "</a></li>'n"; 
    }   
    echo "</ul>'n";
    echo "</nav>'n";

顺便问一下,$menuID是从哪里来的?

您的错误是将if块包装在引号中,以及其他一些引号问题。

试试这个:

echo '<li',  (($thisPage==$menuId) ? ' class="active"' : ''), '>', '<a href="', $row_rsMenu['menuURL'], '">', $row_rsMenu['menuName'], '</a></li>';

除了修复语法错误外,它还使用了一个三元运算符来缩短一些内容。