HTML列表结构中的PHP递归菜单 [英] PHP recursive menu in HTML list structure

查看:99
本文介绍了HTML列表结构中的PHP递归菜单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这里是html结构,它应该是什么样子的。

 < li>< a href =#class =menulink> Dropdown One< / a> 
< ul>
< li>< a href =#>导航项目1< / a>< / li>
< li>
< a href =#class =sub>导航项目2< / a>
< ul>
< li class =topline>< a href =#>导航项目1< / a>< / li>
< li>< a href =#>导航项目2< / a>< / li>
< / ul>
< / li>
< li>
< a href =#class =sub>导航项目3< / a>
< ul>
< li class =topline>< a href =#>导航项目1< / a>< / li>
< li>< a href =#>导航项目2< / a>< / li>
< li>
< a href =#class =sub>导航项目3< / a>
< ul>
< li class =topline>< a href =#>导航项目1< / a>< / li>
< li>< a href =#>导航项目2< / a>< / li>
< li>< a href =#>导航项目3< / a>< / li>

< / ul>
< / li>
< li>< a href =#>导航项目4< / a>< / li>
< / ul>
< / li>
< li>< a href =#>导航项目4< / a>< / li>
< li>< a href =#>导航项目5< / a>< / li>
< / ul>
< / li>
< li>< a href =#class =menulink> Dropdown Two< / a>
< ul>
< li>< a href =#>导航项目1< / a>< / li>
< li>< a href =#>导航项目2< / a>< / li>
< / ul>
< / li>

这里是mysql表格

  id | parent_id |名称| 
--- + --------- + ----------------- +
1 | 0 |下拉1 |
2 | 1 |导航项目1 |
3 | 1 |导航项目2 |
4 | 3 |导航项目1 |
5 | 3 |导航项目2 |
6 | 1 |导航项目3 |
7 | 6 |导航项目1 |
8 | 6 |导航项目2 |
9 | 6 |导航项目3 |
10 | 6 |导航项目4 |
11 | 1 |导航项目4 |
12 | 1 |导航项目5 |
13 | 0 |下拉2 |
14 | 13 |导航项目1 |
15 | 13 |导航项目2 |

可能不是最好的方法,但这里是我的PHP函数尝试:

 函数listCategory($ parent_id,$ level = 0){
$ query =SELECT name,id,parent_id FROM category WHERE parent_id =。$ PARENT_ID;
$ res = mysql_query($ query)或die($ query);
$ i = 1;
while($ level $ 0){echo'< li>< a href = #class =menulink>'。$ name。'< / a>< / li>';}

echo'< li>< a href =# class =menulink>'。$ name。'< / a>< / li>';
// echo $ name。i:。$ i。level:。$ level。< br>;
$ i ++;
listCategory($ id,$ level + 1);
}
}

listCategory(0);

感谢您提前给予帮助

解析方案

 函数listCategory($ parent_id,$ level = 0){
$ query =SELECT name,id,parent_id FROM category WHERE parent_id = $ PARENT_ID。
$ res = mysql_query($ query)或die($ query);
if(mysql_num_rows($ res)== 0)return;
echo'< ul>';
while(list($ name,$ id)= mysql_fetch_row($ res))
{
if($ level == 0)
{
echo'< ; li>< a href =#class =menulink>'。$ name。'< / a>';
}
else
{
echo'< li>< a href =#>'。$ name。'< / a>';
}
listCategory($ id,$ level + 1);
echo'< / li>';
}
echo'< / ul>';
}


here is the html structure how it should look like

<li><a href="#" class="menulink">Dropdown One</a>
    <ul>
        <li><a href="#">Navigation Item 1</a></li>
        <li>
            <a href="#" class="sub">Navigation Item 2</a>
            <ul>
                <li class="topline"><a href="#">Navigation Item 1</a></li>
                <li><a href="#">Navigation Item 2</a></li>
            </ul>
        </li>
        <li>
            <a href="#" class="sub">Navigation Item 3</a>
            <ul>
                <li class="topline"><a href="#">Navigation Item 1</a></li>
                <li><a href="#">Navigation Item 2</a></li>
                <li>
                    <a href="#" class="sub">Navigation Item 3</a>
                    <ul>
                        <li class="topline"><a href="#">Navigation Item 1</a></li>
                        <li><a href="#">Navigation Item 2</a></li>
                        <li><a href="#">Navigation Item 3</a></li>

                    </ul>
                </li>
                <li><a href="#">Navigation Item 4</a></li>
            </ul>
        </li>
        <li><a href="#">Navigation Item 4</a></li>
        <li><a href="#">Navigation Item 5</a></li>
    </ul>
</li>
<li><a href="#" class="menulink">Dropdown Two</a>
    <ul>
        <li><a href="#">Navigation Item 1</a></li>
        <li><a href="#">Navigation Item 2</a></li>
    </ul>
</li>

and here is the mysql table

id |parent_id|        name     |
---+---------+-----------------+
 1 |    0    |Dropdown One     |
 2 |    1    |Navigation Item 1|
 3 |    1    |Navigation Item 2|
 4 |    3    |Navigation Item 1|
 5 |    3    |Navigation Item 2|
 6 |    1    |Navigation Item 3|
 7 |    6    |Navigation Item 1|
 8 |    6    |Navigation Item 2|
 9 |    6    |Navigation Item 3|
10 |    6    |Navigation Item 4|
11 |    1    |Navigation Item 4|
12 |    1    |Navigation Item 5|
13 |    0    |Dropdown Two     |
14 |   13    |Navigation Item 1|
15 |   13    |Navigation Item 2|

maybe not the best approach but here is my PHP function attempt:

function listCategory($parent_id,$level=0) {
    $query = "SELECT name, id , parent_id FROM category  WHERE  parent_id=".$parent_id;
    $res = mysql_query($query) or die($query);
    $i=1;
    while (list ($name, $id) = mysql_fetch_row($res))
    {   
        if ($level==0) {echo '<li><a href="#" class="menulink">'.$name.'</a></li>';}

        echo '<li><a href="#" class="menulink">'.$name.'</a></li>';
        //echo $name ." i: ".$i." level: ".$level."<br>";
        $i++;
        listCategory($id,$level+1);
    }
}

listCategory(0);

thanks for any help in advance

解决方案

function listCategory($parent_id,$level=0) {
    $query = "SELECT name, id , parent_id FROM category  WHERE  parent_id=".$parent_id;
    $res = mysql_query($query) or die($query);
    if(mysql_num_rows($res) == 0) return;
    echo '<ul>';
    while (list ($name, $id) = mysql_fetch_row($res))
    {   
        if ($level==0)
        {
           echo '<li><a href="#" class="menulink">'.$name.'</a>';
        }
        else
        {
           echo '<li><a href="#">'.$name.'</a>';
        }
        listCategory($id,$level+1);
        echo '</li>';
    }
    echo '</ul>';
}

这篇关于HTML列表结构中的PHP递归菜单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆