php - PHP 和 MySQL 中的嵌套列表

标签 php mysql list nested

我正在尝试使用 PHP 和 MySQL 创建一个嵌套的无序列表(通过 CodeIgniter,尽管我认为这不相关)。

我见过许多似乎适用于具有两层嵌套的列表的解决方案,但我需要的解决方案必须具有三层。这就是我需要的东西:

<ul>
    <li>Top Level, Item 1
        <ul>
            <li>Second Level, Item 1
                <ul>
                    <li>Third Level, Item 1</li>
                    <li>Third Level, Item 2</li>
                    <li>Third Level, Item 3</li>
                </ul>
            <li>Second Level, Item 2
                <ul>
                    <li>Third Level, Item 4</li>
                    <li>Third Level, Item 5</li>
                    <li>Third Level, Item 6</li>
                </ul>
            </li>
        </ul>
    </li>
</ul>

我的数据库的输出基本上是:

TOP LEVEL | SECOND LEVEL | THIRD LEVEL
Item 1 | Item 1 | Item 1
Item 1 | Item 1 | Item 2
Item 1 | Item 1 | Item 3
Item 1 | Item 2 | Item 4
Item 1 | Item 2 | Item 5
Item 1 | Item 2 | Item 6

我尝试过检查数据库的输出,使用变量来注册我所在的级别等,但是我在关闭每个列表时陷入了可怕的困惑。

有人可以建议一种方法吗?

最佳答案

查询

SELECT a.item, b.item, c.item FROM TOP_LEVEL a JOIN SECOND_LEVEL b ON b.level = a.level JOIN THIRD_LEVEL c ON c.level = b.level ORDER BY a.item, b.item, c.item

代码

<?php
$q = "SELECT a.item, b.item, c.item FROM TOP_LEVEL a JOIN SECOND_LEVEL b ON b.level = a.level JOIN THIRD_LEVEL c ON c.level = b.level ORDER BY a.item, b.item, c.item ";
...... your database stuff......
...... resulting array should be two-dimensional `$items` ......
$c = 0;
echo "<ul>\n";
while ($c < count($items)) {
    for ($j = 0; $j < count($items[$c][0]); $j++) {
        echo "<li>$items[$c][0]\n";
        echo "<ul>\n";
        for ($k = 0; $k < count($items[$c][1]); $k++) {
            echo "<li>$items[$c][1]\n";
            echo "<ul>\n";
            for ($i = 0; $i < count($items[$c][2]); $i++) {
                echo "<li>$items[$c][2]<\li>\n";
                $c++;
            }
            echo "</ul>\n";
            echo "</li>\n";
                    $c++;
        }
        echo "</ul>\n";
        echo "</li>\n";
            $c++;
    }
    echo "</ul>\n";
}
?>

关于php - PHP 和 MySQL 中的嵌套列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18063291/

相关文章:

php - 结合连续背包问题和可变尺寸装箱问题的算法

php - 什么是好的PHP分析脚本?

mysql - 只从查询返回表,不返回 View

java - 将 List<Integer> 分成 5 个最小值周围的 5 个 block 列表的好方法

c# - 将 List<string> 从 Json 反序列化为 List<object>

python - 在 Python 中使用 [] 和 list() 的区别

php - undefined offset : 1 error for laravel validation

php - 如果我在 PHP 中使用静态方法创建到数据库的连接,我最终会得到一个还是多个连接?

mysql - 邻接列表模型或嵌套集模型,我应该使用哪种数据模型来存储分层数据?

mysql - 如何同时使用 group by 1,2 和 2,1