0

可能重复:
如何将一系列父子关系转换为层次树?

我正在开发一个网络应用程序。并想使导航数据库驱动。多级导航,顺便说一句。现在,棘手的部分是,我只想使用一张桌子。我查看、阅读和搜索,但找不到答案。

我的表结构是

ID | NAME | LINK | ALC | PARENT_ID |

0    Home   #      0     0

1    Ops    #      0     0

2    ops1   #      0     1

3    ops2   #      0     1

问题是我如何在数组中获取数据库内容,以便能够使用子类别创建列表标签

<ul>
    <li>HOME</li>
    <li>OPS
        <ul>
            <li>ops1</li>
            <li>ops2</li>
        </ul>
    </li>
</ul>
4

2 回答 2

0

It's called recursive functions and they call themselves. Proof of concept:

function printUL($parentID = 0){
    // select elements with PARENT_ID = $parentID (or PARENT_ID = NULL if 0)
    if(!$children){
        return;
    }
    // now print stuff
    echo '<ul>';
    foreach($children as $child){
        echo '<li>';
            echo $child['NAME']; // change as you need
            printUL($child['ID']); // functions calls itself to dig deeper
        echo '</li>';
    }
    echo '</ul>';
}
// call for root element
printUL($parentID);

Hope it makes sense. Change it to your needs.

于 2012-10-29T15:41:50.933 回答
-1
function myTree($parent_id) {
   $sql = mysql_query("SELECT category_id, category_name 
                       FROM categories 
                       WHERE parent_id='$parent_id'");
   if(mysql_num_rows($sql) != 0) {
       echo '<ul>'; 
       while($row = mysql_fetch_array($sql)) {
           echo '<li>' . $row['category_name'];

           myTree($row['category_id']);

           echo '</li>';
       }
       echo '</ul>';
   }
}

echo '<div>';

myTree(0);

echo '</div>';
于 2012-10-29T15:42:12.850 回答