如何在 PHP 中以嵌套 HTML 形式从 MySQL 数据库检索分层数据?

Linda Hamilton
发布: 2024-10-24 02:32:29
原创
510 人浏览过

How to Retrieve Hierarchical Data from a MySQL Database in PHP as Nested HTML?

PHP 中的类别层次结构检索

在 MySQL 数据库中,您可以将层次结构数据存储在名为categories 的表中,其中包含category_id 和parent_id 列。要使用 PHP 以分层结构检索此数据,请按照以下步骤操作:

  1. 从数据库中获取数据:

    使用 SQL 查询获取按名称排序的所有类别:

    <code class="php">$sql = "SELECT category_id, parent_id, name FROM categories ORDER BY name";
    $result = $pdo->query($sql);</code>
    登录后复制
  2. 创建引用数组:

    创建一个关联数组 $refs 来存储对每个类别。每个引用将包含parent_id 和name 属性。对于没有父级的类别 (parent_id = 0),将它们添加到 $list 数组中。

    <code class="php">$refs = array();
    $list = array();
    foreach ($result as $row) {
        $ref = &$refs[$row['category_id']];
        $ref['parent_id'] = $row['parent_id'];
        $ref['name'] = $row['name'];
        if ($row['parent_id'] == 0) {
            $list[$row['category_id']] = &$ref;
        } else {
            $refs[$row['parent_id']]['children'][$row['category_id']] = &$ref;
        }
    }</code>
    登录后复制
  3. 生成嵌套 HTML 列表:

    创建递归函数 toUL 以使用 $list 数组生成嵌套 HTML 列表。它应该检查子树并递归调用自身来构建子树。

    <code class="php">function toUL(array $array) {
        $html = '<ul>' . PHP_EOL;
        foreach ($array as $value) {
            $html .= '<li>' . $value['name'];
            if (!empty($value['children'])) {
                $html .= toUL($value['children']);
            }
            $html .= '</li>' . PHP_EOL;
        }
        $html .= '</ul>' . PHP_EOL;
        return $html;
    }</code>
    登录后复制
  4. 显示层次结构:

    使用 toUL 函数生成并显示分层 HTML 列表。

您可以在参考资料中提供的“相关问题”部分中找到有关从对象的数组记录集中获取嵌套 HTML 列表的有用示例。

以上是如何在 PHP 中以嵌套 HTML 形式从 MySQL 数据库检索分层数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!