【问题标题】:PHP: Quick threaded comments questionPHP:快速线程评论问题
【发布时间】:2010-12-11 01:42:21
【问题描述】:

我基本上是在尝试编写一个简单的线程 cmets 系统,用户可以在其中评论其他用户的评论。它只允许一级 cmets。

数据库中的 cmets 表是这样的: - ID - 文本 - 时间戳 - parent_id(可以为NULL)

我的问题是我应该如何查询 cmets 及其子 (cmets)?我只是不确定它们在数组中的位置,以及如何正确循环和输出它们。

非常感谢您的帮助 =)

【问题讨论】:

    标签: php mysql codeigniter threaded-comments


    【解决方案1】:

    如果它只有一层深度,您可以获取所有 cmets 并将它们放入您想要的结构中。你可以这样做:

    function get_comments()
    {
        $sql = 'select * from comments order by timestamp';
        $result = $this->db->query($sql)->result();
    
        $comments = array();
        foreach ($result as $row)
        {
            if ($row->parent_id)
            {
                $comments[$row->parent_id]->children[] = $row;
            }
            else
            {
                $comments[$row->id] = $row;
                $comments[$row->id]->children = array();
            }
        }
    
        return array_values($comments);
    }
    

    【讨论】:

      【解决方案2】:

      以下是关于如何处理此问题的相当详细的说明:

      http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

      【讨论】:

      • 我已经读过了,但恐怕我仍然不知道该怎么做。如果我错了,请纠正我,但该链接说明了如何在每个级别中只获取一个孩子,而不是全部,对吧?
      猜你喜欢
      • 2016-12-02
      • 1970-01-01
      • 2011-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-25
      相关资源
      最近更新 更多