php将css类添加到所选菜单项

时间:2011-11-03 14:41:13

标签: php css class dynamic-data

我这样用php生成菜单。

<?php 
    while($rowMenu = mysql_fetch_array($rsMenu)){
       $link="category.php?cat=".$rowMenu['MenuItemID'];
       $name = utf8_encode($rowMenu['name']);
?>                    
    <a href="<?php echo $link; ?>"><li><?php echo $name; ?></li></a>                       
<?php 
     }
?>

现在我想为当前页面的项目添加背景颜色。背景颜色在css(.productActive)中定义

我搜索在php中添加一个css类,就像我用javascript制作但没有找到任何解决方案,所以我这样做了

<?php 
            $cat=$_GET['cat']; /gets the id from the URL

        while($rowMenu = mysql_fetch_array($rsMenu)){
           $link="category.php?cat=".$rowMenu['MenuItemID'];
           $name = utf8_encode($rowMenu['name']);
    ?>                    
        <a href="<?php echo $link; ?>"><li><?php echo $name; ?></li></a>                       
    <?php

            if($cat == $rowMenu['MenuItemID']) {
          echo"<a href=".$link."><li class='productActive'>".$nome."</li></a>"; 
             }

         }//end of while
    ?>

但是这样可以在菜单中再添加一个项目。它重复了现在的li项目。还有其他办法吗?

由于

2 个答案:

答案 0 :(得分:3)

while($rowMenu = mysql_fetch_array($rsMenu)){
    $link="category.php?cat=".$rowMenu['MenuItemID'];
    $name = utf8_encode($rowMenu['name']);

    if($cat == $rowMenu['MenuItemID']) {
        echo"<a href=".$link."><li class='productActive'>".$name."</li></a>"; 
    } else {
        echo"<a href=".$link."><li>".$name."</li></a>";
    }
}

这应该有效,我想

答案 1 :(得分:0)

while($rowMenu = mysql_fetch_array($rsMenu)){
  $link = "category.php?cat=".$rowMenu['MenuItemID'];
  $name = utf8_encode($rowMenu['name']);

  // add active class?
  $class = $cat == $rowMenu['MenuItemID']
         ? ' class="productActive"'
         : '';

  ?>                    
    <li<?= $class; ?>><a href="<?= $link; ?>"><?= $name; ?></a></li>
  <?php
}//end of while

然后,如果项目匹配,它会将该类添加到标记中,否则它将不会添加任何内容。

虽然我更喜欢这个:

printf('<li%s><a href="%s">%s</a></li>', $class, $link, $name);

<强> P.S。锚点应始终在<{em>里面} <li>,而不是在外面。