【问题标题】:php add a css class to selected menu itemphp 为选定的菜单项添加一个 CSS 类
【发布时间】:2011-11-03 14:41:12
【问题描述】:

我有一个以这种方式在 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 项目。有没有其他办法??

谢谢

【问题讨论】:

  • 这是您的确切代码吗?如果是这样,PHP 格式错误,你很幸运能得到任何输出。
  • 考虑使用 if/else,而不仅仅是 if
  • @Mr. Disappointment 不明白为什么。它一切正常@Mikhail 是的。我确实像你说的那样。谢谢
  • 我同意 Mr.D.代码格式不正确,并且混杂在一起。有几个拼写错误(例如评论的单斜杠和名称而不是名称)。我也预见到未来的错误。 julio 下面的代码更容易阅读,即使没有 cmets

标签: php css class dynamic-data


【解决方案1】:
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>";
    }
}

我觉得应该可以的

【讨论】:

    【解决方案2】:
    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);
    

    附言。锚点应始终在内部&lt;li&gt;,而不是外部。

    【讨论】:

    • 无缘无故投反对票?上面的代码有什么问题?
    猜你喜欢
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 2023-03-25
    相关资源
    最近更新 更多