PHP: быстрый вопрос с комментариями - PullRequest
0 голосов
/ 10 декабря 2010

Я пытаюсь написать простую систему многопоточных комментариев, где пользователи могут комментировать комментарии других пользователей. Это позволит только один уровень комментариев.

Таблица комментариев в базе данных выглядит примерно так: - Я бы - текст - метка времени - parent_id (может быть NULL)

У меня вопрос, как я должен запрашивать комментарии и их детей (комментарии)? Я просто не уверен, как они будут размещены в массиве, а затем как их зациклить и правильно вывести.

Ваша помощь очень ценится =)

Ответы [ 2 ]

2 голосов
/ 10 декабря 2010

Если его глубина составляет всего один уровень, вы можете получить все комментарии и погрузить их в нужную вам структуру.Вы могли бы сделать что-то вроде этого:

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);
}
1 голос
/ 10 декабря 2010

Вот довольно подробное объяснение того, как с этим справиться:

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

...