用更简单的方式构建无序列表导航菜单-代码美化问题


Building unordered list navigation menu with an easier way - Code Beautifying Question

我写了一个动态菜单基于三个表在db上反映以下层次框架:

> Section
>> Categories
>>> Subcategory
下面是我的代码:
include("connDB.php");
echo '<ul>';
$q1 = mysql_query("SELECT * FROM section ORDER BY section_name ASC");
while($getSection = mysql_fetch_array($q1)) {
    echo "<li><a href='content.php?sec={$getSection['section_id']}&cat='>{$getSection['section_name']}</a>";
    $q2 = mysql_query("SELECT * FROM category WHERE section_id = '{$getSection['section_id']}'");
    if(mysql_num_rows($q2) > 0) {
        echo "<ul>";
        while($getCat = mysql_fetch_array($q2)) {
            echo "<li><a href='content.php?sec={$getSection['section_id']}&cat={$getCat['category_id']}&scat='>{$getCat['category_name']}</a>";
            $q3 = mysql_query("SELECT * FROM subcategory WHERE category_id = '{$getCat['category_id']}'");
            if(mysql_num_rows($q3) > 0) {
                echo "<ul>";
                while($getSubCat = mysql_fetch_array($q3)) {
                    echo "<li><a href='content.php?sec={$getSection['section_id']}&cat={$getCat['category_id']}&scat={$getSubCat['subcategory_id']}&getDetail='>{$getSubCat['subcategory_name']}</a></li>";
                }
                echo "</ul>";
                echo "</li>";
            }
        }
        echo "</ul>";
        echo "</li>";
    }
}
echo '</ul>';

我想知道我是否能找到任何帮助来美化这个基本级别的代码,以更好的方式,更专业的方式?谢谢你的帮助。

看一下:

http://en.wikipedia.org/wiki/Nested_set_model

将三个表重新建模为一个表,然后将递归调用更改为一个SQL语句,并执行一些php循环来创建列表。:)

所以我知道这是一个老问题。然而,对于任何偶然发现这一点的人来说,都有一个解决方案。它和另一个答案是一样的但有时也被称为修改预序树遍历(MPTT)

一些web框架,如CakePHP和Django,已经将其内置,并将其称为"树",这将大大增加菜单的灵活性,并保持秩序。