我正在尝试使用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>';
除了修复语法错误外,它还使用了一个三元运算符来缩短一些内容。