数据库驱动的导航PHP和MySQL



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

我正在研究Web应用程序。并希望使导航数据库驱动。多级导航,顺便说一句。现在,它的棘手部分是,我只想使用一个表。我看了看,阅读和搜索,但找不到答案。

我的表结构是

ID | NAME | LINK | ALC | PARENT_ID |
0    Home   #      0     0
1    Ops    #      0     0
2    ops1   #      0     1
3    ops2   #      0     1

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

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

它称为递归函数,它们称为自己。概念证明

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

希望这是有道理的。将其更改为您的需求。

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

相关内容

  • 没有找到相关文章

最新更新