我正在制作一个面向帖子的网站,其中包含主题及其相应的子主题。在主题页面上,它与Reddit Comment系统非常相似(嵌套注释或分层注释)。我在php和mysql中创建这个应用程序。 这是我的mysql表结构:
comment_id | post_id | parent_id | text
1 1 0 hi
2 1 1 hello
3 1 2 hello
4 1 2 hello test
对于父评论,parent_id为0。
我显示嵌套注释的PHP代码是:
$query = $conn->prepare("SELECT message,comment_id from comments where parent_id=0");
$query->execute();
$data = $query->fetchAll();
$output = array();
getComments(0,$conn);
function getComments($parent,$conn)
{
try
{
$query = $conn->prepare("SELECT `message`,`comment_id` FROM comments WHERE parent_id = $parent and post_id = 1");
$query->execute();
$data = $query->fetchAll();
}
catch(Exception $e)
{
echo "Error is:" . $e->getMessage();
}
if (count($data)>0)
{
echo "<ul>\n";
foreach($data as $value)
echo "<li>", $value["message"], getComments($value["comment_id"],$conn), "</li>\n";
echo "</ul>\n";
}
else
echo ($parent === 0) ? 'No Comments!' : "";
}
以分层格式显示评论工作正常。但我想要的是生成多维JSON数组的注释而不是显示它们。我知道我需要编辑给定的代码
echo "<li>", $value["message"], getComments($value["comment_id"],$conn), "</li>\n";
生成json输出,如
{
"data":
[
{
"comment_id" : "1",
"comment_text" : "hi"
"replies":
[
{
"comment_id" : "2"
"comment_text" : "hello"
"replies" :
---
--- so on
}
]
}
so on..
]
}
请帮助我。