2011-03-06 108 views
2

这里PHP递归菜单是HTML结构应该如何看起来像在HTML表结构

<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> 

,这里是mysql表

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| 

也许不是最好的方法,但这里是我的PHP功能的尝试:

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); 

感谢您的帮助提前

+0

刚刚获得整个表,由家长ID进行排序,并建立从层次结构。 – Oded 2011-03-06 20:55:19

回答

2
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>'; 
} 
+0

谢谢!工作得很好!还有一个问题:我如何跟踪物品层次结构?所以id1 = 1,id2 = 1 1,id3 = 1 2,id4 = 1 2 1,id5 = 1 2 2 ... – PCD25 2011-03-06 23:10:48

+1

@ PCD25:创建一个数组,将当前ID推到它的末尾,它沿着孩子们。 – 2011-03-06 23:15:49

-1

你不打开和关闭您的UL标签