如何用PHP显示分层的“NESTED SET”数据?

2024-06-28

我试图弄清楚如何使用 php 显示嵌套的 MySQL 数据。我已经设法搁置所有“叶节点”,但后来我陷入困境。我需要显示一整棵树及其所有元素的关系。 这是表格

category_id, name, lft, rgt
1 Saws 1 12
2 Chainsaws 2 7
3 Red 3 4
4 Yellow 5 6
5 Circular saws 8 9
6 Other saws 10 11

这是代码:

$query = 'SELECT node.name, node.lft, node.rgt
    FROM item_cats AS node,
        item_cats AS parent
    WHERE node.lft BETWEEN parent.lft AND parent.rgt AND parent.name = "' . SAWS . '"
    ORDER BY node.lft';
$result = mysql_query($query, $db) or die (mysql_error($db));
while ($row = mysql_fetch_assoc($result)) {
    if ($row['rgt'] == $row['lft']+1) {
        echo '==>';
    }
    echo $row['lft'];
    echo $row['name'];
    echo $row['rgt'];
    echo '<br />';
    echo '<br />';
}

这就是我得到的:

1Saws12
2Chainsaws7
==>3Red4
==>5Yellow6
==>8Circular saws9
==>10Other saws11

根据 Stu 向我展示的链接,本教程显示了用于确定深度的查询:

SELECT node.name, (COUNT(parent.name) - 1) AS depth
FROM nested_category AS node,
        nested_category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
GROUP BY node.name
ORDER BY node.lft

所以这样的事情应该有效:

<?PHP
$query = 'SELECT node.name, (COUNT(parent.name) - 1) AS depth
    FROM nested_category AS node,
            nested_category AS parent
    WHERE node.lft BETWEEN parent.lft AND parent.rgt
    GROUP BY node.name
    ORDER BY node.lft';

$result = mysql_query($query, $db) or die (mysql_error($db));
while ($row = mysql_fetch_assoc($result)) {
    for ($i = 0; $i < $row['depth']; $i++) {
        echo '==>';
    }

    echo $row['name'];
    echo '<br />';
    echo '<br />';
}
?>

这应该输出:

Saws
==>Chainsaws
==>==>Red
==>==>Yellow
==>Circular Saws
==>Other Saws
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何用PHP显示分层的“NESTED SET”数据? 的相关文章

  • 从 MySql 迁移到 Sql Server 2008

    我有大约 200 GB 的 Mysql 转储文件 现在我需要迁移到 Sql server 2008 那么我应该遵循什么方法 我应该继续逐行 sql 语句还是有任何适合我的要求的 GUI 工具 微软 SQL Server 迁移 Assista
  • PHP 中的变量 $this 意味着什么?

    我看到变量 this一直用PHP 但我不知道它有什么用 我个人从未使用过它 有人可以告诉我变量如何 this在 PHP 中工作吗 它是对当前对象的引用 最常用于面向对象的代码中 参考 http www php net manual en l
  • mysql-connector-java 升级到 8.0.11 更改了从数据库检索的所有日期值

    对于 Spring 项目 mysql connector java已迁移自6 0 6 to 8 0 11 因此与8 0 11问题如下 Caused by com mysql cj exceptions InvalidConnectionAt
  • 对许多站点使用中央数据库服务器:合理吗?

    基本上 我需要在多达几十个站点上同步数据库数据的某些部分 完美的解决方案是创建一个中央服务器来托管该数据 每个页面加载都必须从两个数据库服务器 本地和远程数据库服务器 获取数据 并且写入远程服务器也很常见 虽然数据库服务器在硬件方面可以达到
  • SQL错误:0,SQLState:08S01通信链路故障[重复]

    这个问题在这里已经有答案了 我收到此错误 不那么频繁 2013 05 08 16 44 35 786 WARN JDBCExceptionReporter java 100 org hibernate util JDBCExceptionR
  • 替换字符串中的重复字符串

    我正在尝试查找 并替换 字符串中重复的字符串 我的字符串可以是这样的 Lorem ipsum dolor 坐阿梅特坐 阿梅特坐 阿梅特坐诺斯特鲁德实习amit situllamco Laboris nisi ut aliquip ex ea
  • Woocommerce - 检查产品是否是在 60 天前创建的

    我想检查 Woocommerce 产品是否是在不到 60 天前创建的 如果属实 请做点什么 我正在使用官方 Woocmerce 功能获取在后端 管理中创建产品的日期 product gt get date created 我的代码部分有效
  • Magento 开源 2.3 - CSS 和 JS 未加载

    I installed Magento 2 3 successfully but when type http localhost Magento2 http localhost Magento2 I get a blank page li
  • 按日期和时间降序排序?

    全部 我想显示特定 id 最后输入的 5 条数据 我的sql查询是 SELECT id name form id DATE updated at as date FROM wp frm items WHERE user id 11 form
  • 使用 Wikipedia API 查找文章的主要类别

    我有一个文章列表 我想找到每篇文章的主要类别 维基百科在这里列出了它的主要类别 http en wikipedia org wiki Portal Contents Categories http en wikipedia org wiki
  • 在准备好的语句中使用“like”通配符

    我正在使用准备好的语句来执行 mysql 数据库查询 我想实现基于某种关键字的搜索功能 为此我需要使用LIKE关键字 我知道的就这么多 我以前也使用过准备好的语句 但我不知道如何使用它LIKE因为从下面的代码中我将在哪里添加 keyword
  • Laravel Factory:手动增量列

    对于以下工厂定义 该列order需要按顺序进行 已经有专栏了id即自动递增 第一行的order应该开始于1以及每个附加行的order应该是下一个数字 1 2 3 etc factory gt define App AliasCommand
  • WordPress 中的多词搜索不显示搜索结果

    我自定义了一个主题 但在使用多词查询的搜索结果时遇到一些问题 网站上线时间为www aetterworldbydesign com http abetterworldbydesign com 搜索单个单词 http www abetterw
  • 尝试加载 php_oci8.dll 时 PHP 启动时出现警告

    我正在使用 XAMPP 并尝试为 sql 配置 Oracle 连接 我取消了该行的注释extension php oci8 dll一开始出现错误 缺少oci dll 但后来我从Oracle网页下载了instantclient 我尝试过版本
  • 如何从 PHP 中的两个不同数组获取公共值

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有两个带有一些用户 ID 的数组 array1 array 5 26 38 42 array2 array 15 36 38 42 我需
  • 主键与主键

    创建包含数据库结构的 mysql 转储时 其中一张表显示以下内容 CREATE TABLE completedTransactions paymentId int 10 unsigned NOT NULL timestamp int 15
  • 在 MySQL 数据库中存储大文件的更好方法?

    我有一个 PHP 脚本 您可以使用它上传非常大的文件 最大 500MB 并且该文件的内容存储在 MySQL 数据库中 目前我做这样的事情 mysql query INSERT INTO table VALUES uploadedfile f
  • Codeigniter 错误:不允许您尝试上传的文件类型

    如果我上传一个csv文件 没有问题localhost一切工作正常 但是当我在实时服务器上上传我的应用程序并上传csv文件然后抛出此错误 The filetype you are attempting to upload is not all
  • 在cakephp中调用函数

    public function data if old status prev lat lat prev long long if status Village Unknown exec query else if status Town
  • Laravel 搜索路由和控制器

    我正在构建我的第一个基本 Laravel Web 应用程序 在学习了一些教程之后 这是我自己修改的第一个应用程序 我在路由到控制器然后获取正确的网址时遇到了一些麻烦 理想情况下 此时我应该只有两条路线 and user 在主页上 您可以通过

随机推荐

  • 如何创建独立的电梯 Web 应用程序?

    如何制作独立的电梯应用程序 使用哪些工具 库 与在某些应用程序服务器中使用 lift 应用程序作为战争相比 性能如何 使用 onejar maven 插件http onejar maven plugin googlecode com svn
  • 创建视图中可用的自定义助手

    我有太多文本实用方法 例如MakeShortText string text int length RemoveTags string text TimeAgo DateTime date 和别的 我想从单独的助手访问它们 如下一个示例所示
  • Visual Studio Code - 基于 .gitignore 自动排除

    我希望 VSCode 根据我的情况自动排除文件 文件夹 gitignore配置 对于资源管理器排除 我找到了一个扩展 explorer excluded files它管理着files exclude设置 但对于快速打开文件 cmd p 我什
  • GitHub 的 README 支持哪些文件类型

    我注意到 GitHub README 使用了许多不同的文件类型 最常见的是 md and rst 查看 GitHub 文档和帮助页面后 我没有找到有关允许哪些文件类型的信息 我只是在寻找类型列表 以便我可以找出可以在下一个自述文件中使用哪些
  • AngularJS 与 Apache Tiles

    我在我的项目中使用 Spring MVC 和 AngularJS AngularJs 可以吗 routing和 ngView 被用来代替or与阿帕奇瓷砖框架 据我所知 使用 routing 和 ngView 我们创建模板并在单页应用程序中重
  • 使用 CSS2 将

    有没有一个好的跨浏览器解决方案来拆分单个 ul 分成两列 或者最好的方法仍然是使用两个相邻浮动的单独列表 我正在寻找单一的解决方案 因此如果需要替代 HTML 来支持旧版浏览器 则不允许使用 CSS3 优点 要求浏览器支持IE7 FF3 我
  • Elasticsearch 主分片不平衡

    我注意到我的 elasitcsearch 集群中有一个奇怪的行为 正如您在下面的屏幕截图中看到的 它显示了 kopf 插件 大多数主分片位于 nl 1 服务器上 我认为 elasitcsearch 在所有服务器上均匀地平衡了主分片 我错了吗
  • 如何反转 TextView 选取框的方向

    我想反转 TextView 中选取框的方向 默认情况下 文本从右向左移动 我希望它从左向右移动 我怎样才能做到这一点 我想出了一个非常简单易行的方法来做到这一点 我制作了一个选框效果 根据我们的选择向两个方向移动 所以 这里有一个技巧 我在
  • 在一项服务中引用多个 API 调用 (Angular)

    我正在通过 Angular http 请求访问 API 以收集不同足球队的信息 如果我只访问一个团队 那就没问题了 我将创建一个进行调用的服务 然后在我的控制器中引用该服务函数 但是 我希望在多个团队中执行此操作 而不必为每个团队创建单独的
  • 有没有办法调用需要 IEnumerable 且具有单个值的 C# 方法? ...通过基准测试[重复]

    这个问题在这里已经有答案了 我只是想知道我是否错过了一些语法糖或微优化 如果我调用一个需要 IEnumerable 值的方法 但我只有一个值 那么我将该单个值放入一个数组中 例如 var x 1 23 SquareAllTheNumbers
  • 在.NET Core中注入通用接口

    我想将此接口注入到我的控制器中 public interface IDatabaseService
  • 如何获取 Angular2 中元素的当前位置信息

    我有ElementRef我的导航栏 我试图找出它离我的窗口顶部有多近 这样我就可以让它粘起来 div class nav bar div ViewChild navBar navBarElement 我正在滚动事件中打印出它的 native
  • 如何确定 RecyclerView 最后一项在屏幕上可见?

    我有一个RecyclerView我将数据列表添加到RecyclerView 我想在列表中添加更多数据 最后一次RecyclerView项目在屏幕上可见 之后我想进行网络服务调用并更新RecyclerView数据 我怎样才能实现这个目标 有什
  • 有没有办法让控制台应用程序仅使用 .NET Core 中的单个文件运行?

    在 NET框架中 您可以制作一个 EXE将从命令行运行的文件 无需任何额外的配置文件 如果使用 ILMerge 您可以将所有 DLL参考文献1 EXE集会 我正在尝试使用 NET Core 来完成同样的事情 但到目前为止还没有成功 即使是最
  • 获取英汉对齐数据

    使用 TranslateArray2 我能够获取我想要的大多数语言的对齐数据 但不能获取英语到中文 zh 的对齐数据 我怎么才能得到它
  • 如何在 Mac v 10.7.2 上安装/使用 php

    我是对使用 PHP 感兴趣的普通大学生 谁能告诉我 101 如何使用简单明了的语言在 mac 版本 10 7 2 上安装 启用它 我将感谢任何和所有的帮助 Cheers 无需安装 PHP 或 Apache 它们已随 Mac 10 7 一起提
  • ios中的过滤器数组检查多个属性

    我有一系列自定义对象 自定义对象看起来像这样 interface User NSObject property nonatomic strong NSString user Id property nonatomic strong NSSt
  • 调用 GCMRegistrar.register() 时泄漏 IntentReceiver 错误

    我正在尝试完成以下入门步骤谷歌的GCM http developer android com guide google gcm gs html来自 Google 的 Android 开发者网站 当我的设备尝试注册时 由于以下原因而失败 Ac
  • 在 emacs 中移动区域或行

    我正在 emacs 中寻找一种将文本向右或向左移动的方法n空间 与 vim 中类似的功能 lt lt or gt gt 它应该在一个区域上工作 或者如果当前行上没有选择任何区域 并且不会将光标从当前位置移动 解决方案来自Emacs维基 ht
  • 如何用PHP显示分层的“NESTED SET”数据?

    我试图弄清楚如何使用 php 显示嵌套的 MySQL 数据 我已经设法搁置所有 叶节点 但后来我陷入困境 我需要显示一整棵树及其所有元素的关系 这是表格 category id name lft rgt 1 Saws 1 12 2 Chai