如何使用php或javascript将特定css id添加到父菜单

如何使用php或javascript将特定css id添加到父菜单,php,css,html,Php,Css,Html,我们正在开发一个从mysql获取数据的菜单 数据库结构 id | name | link | parent_id ----------------------------------------- 1 | Home | p.php | 0 2 | Portfolio | p.php | 0 3 | Projects | p.php | 0 4 | Contact | p.php | 0

我们正在开发一个从mysql获取数据的菜单

数据库结构

id  | name      | link      |   parent_id   
-----------------------------------------
1   | Home      | p.php     |   0
2   | Portfolio | p.php     |   0
3   | Projects  | p.php     |   0
4   | Contact   | p.php     |   0
5   | Web Design| p.php     |   2
6   | Grap. Desg| p.php     |   2
.
.
.
14  | Quote     | p.php     |   6 
.
-----------------------------------------
PHP和PDO

<?php
$baseUri = $_SERVER['PHP_SELF'];
$menuHtml='';
function createMenu($parentId){
    global $baseUri;
    global $menuHtml;
    global $db;
    $query = $db->prepare('SELECT * FROM menu_options WHERE `parent_id` = ?');
    $query->bindParam(1, $parentId, PDO::PARAM_INT);
    $query->execute();
    $rowCount = $query->rowCount();
    if ($rowCount == 0) return;
    if ($parentId == 0)
        $menuHtml.="<ul id=\"menu\">\r\n";
    else
    $menuHtml.='<ul>';
    while($row = $query->fetch(PDO::FETCH_OBJ))
    {
        $menuHtml.='<li><a href="'.$row->url.'">'.$row->name.'</a>';
        createMenu($row->id);
        $menuHtml.='</li>';
    }   
$menuHtml.='</ul>';
return $menuHtml;
}
echo createMenu(0);
?>

我们有子菜单,这些子菜单有父菜单。我们只想将特定的CSS类添加到
parent\u id=0
。如果子菜单的父菜单大于0,则应为“查找父菜单的父菜单”。这有点复杂,我们很困惑。

您可以在URL中添加一个p参数,表示parentId

<ul>
    <li><a href="index.php?p=0">HOMEPAGE</a></li>
    <li class=""><a href="articles.php?p=1">CORPORATE</a>
        <ul style="visibility: hidden; display: none;">
            <li><a href="article.php?i=1&p=1">About Us</a></li>
            <li><a href="article.php?i=1&p=1">Mission Vision</a></li>
            <li><a href="project2.php&p=1">Company Tag</a></li>
            <li><a href="project2.php&p=1">Production</a></li>
        </ul>
     </li>
     <li class=""><a href="projects.php?p=2">PRODUCTS</a>
        <ul style="visibility: hidden; display: none;">
            <li><a href="project4.php?p=2">Meltblown</a></li>
            <li><a href="support.php?p=2">Spunbond</a></li>
            <li><a href="quote.php?p=2">Sms &amp; Smms</a></li>
            <li><a href="">Composites</a></li>
        </ul>
     </li>
     <li><a href="articles.php?i=1&p=3">QUALITY</a></li>
     <li><a href="articles.php?i=1&p=4">NEWS</a></li>
     <li><a href="gallery.php?p=5">GALLERY</a></li>
     <li><a href="contact.php?p=6">CONTACT</a></li>
</ul>
稍后在代码中添加
  • 元素时,您会编写 (注意要添加的类的添加)

    if($parentId==$page){
    $menuHtml.='
  • ; }否则{ $menuHtml.='li>'; }
  • 我将创建一个子菜单数组,然后在_array()中使用一个名为
    的函数条件,该函数接受两个参数,一个是您要在数组中搜索的值,第二个参数是子菜单数组,将在其中搜索您的值。…@Mr.Alien谢谢您的评论。你能给我看一个示例代码来理解你的算法逻辑吗?我不太清楚你的问题,因此我没有回答,你能澄清一下吗,如果你的一个子菜单处于活动状态,你想突出显示父菜单吗?此外,是否还要将另一个活动类添加到子菜单?@Mr.Alien如果子菜单或父菜单的链接位于地址栏上,则我们希望仅显示父菜单。谢谢。我可以推荐一个JavaScript解决方案吗?谢谢你的回答。但现在所有的父菜单都亮起了。我不知道如何处理父菜单和行id,所以我只写了
    if($parentId==$page)
    但是您需要根据您在数据库中使用的值修改此条件我使用
    $parentId
    处理家长,但我不知道为什么会发生这种情况。显示通过运行新php代码获得的html输出
    <ul>
            <li><a class="current" href="index.php">HOMEPAGE</a></li>
            <li class=""><a href="articles.php">CORPORATE</a>
    
    <ul>
        <li><a href="index.php?p=0">HOMEPAGE</a></li>
        <li class=""><a href="articles.php?p=1">CORPORATE</a>
            <ul style="visibility: hidden; display: none;">
                <li><a href="article.php?i=1&p=1">About Us</a></li>
                <li><a href="article.php?i=1&p=1">Mission Vision</a></li>
                <li><a href="project2.php&p=1">Company Tag</a></li>
                <li><a href="project2.php&p=1">Production</a></li>
            </ul>
         </li>
         <li class=""><a href="projects.php?p=2">PRODUCTS</a>
            <ul style="visibility: hidden; display: none;">
                <li><a href="project4.php?p=2">Meltblown</a></li>
                <li><a href="support.php?p=2">Spunbond</a></li>
                <li><a href="quote.php?p=2">Sms &amp; Smms</a></li>
                <li><a href="">Composites</a></li>
            </ul>
         </li>
         <li><a href="articles.php?i=1&p=3">QUALITY</a></li>
         <li><a href="articles.php?i=1&p=4">NEWS</a></li>
         <li><a href="gallery.php?p=5">GALLERY</a></li>
         <li><a href="contact.php?p=6">CONTACT</a></li>
    </ul>
    
    $page=-1;
    if(isset($_GET['p'])){
        $page = htmlspecialchars($_GET['p']);
    }
    
    if($parentId == $page){
        $menuHtml.='<li class="theClassYouWantToAdd"><a href="'.$row->url.'">'.$row->name.'</a>';
    } else {
        $menuHtml.='<li><a href="'.$row->url.'">'.$row->name.'</a>';
    }