php - 根据上下文对 MySQL 结果进行排序

标签 php mysql sorting

我正在尝试使用 PHP 和 MySQL 创建一个嵌套评论系统。但我被困住了

  • 我的数据库结构是id、正文、时间、回复和深度。
  • 常规评论的回复字段将为“0”。如果它正在回复另一个,它将对应于它正在回复的评论的 id
  • 深度表示距最高父级的深度

如果这是我表格的内容...

+------+-------------+--------+---------+---------+
|  id  |  body       |  time  |  reply  |  depth  |
+------+-------------+--------+---------+---------+
|   1  |  Some msg1  |   1    |    0    |    0    |
|   2  |  Some msg2  |   2    |    0    |    0    |
|   3  |  aReply1    |   3    |    1    |    1    |
|   4  |  aReply2    |   4    |    1    |    1    |
|   5  |  aReply21   |   5    |    3    |    2    |
+------+-------------+--------+---------+---------+

它会看起来像这样......

- (1) Some msg1
-- (3) aReply1
--- (5) aReply21
-- (4) aReply2
- (2) Some msg2

我希望使用这种方法是可能的,它有点超出了我的逻辑。

最佳答案

如果您无法更改表结构,您可以只获取所有行(按时间从表顺序中选择 *),然后使用 PHP 生成树。

对于树存储,我建议使用嵌套集算法。

关于php - 根据上下文对 MySQL 结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2210743/

相关文章:

c# - 向快速排序算法添加计数器以显示交换操作的总数

perl - Perl 和 Unix 如何以相同的顺序对 Unicode 字符串进行排序和排序?

php - 使用 PHP 时如何配置 HTML5 Boilerplate 以正确输出引号?

php - 我可以在 PHP 中定义多少个最大常量?

php - 按距离对邮政编码邻近搜索进行排序(php/mysql)

c# - 是否可以使用 ExecuteReader() 两次?

sorting - 如何完全按照选择的顺序从 TOpenDialog 获取选定的文件?

php - 如何跟踪收件人打开了哪些(或多少)电子邮件?

php - 在 Xpath (PHP) 中获取以大写字母开头的标签

java hibernate 即使使用 <property name ="hibernate.hbm2ddl.auto">update</property> 也未创建表