我已经实现了一个多级注释系统,其中注释及其回复从SQL数据库中提取出来并通过数组存储(通过PHP例程)。以下是注释的数据结构示例,其中包含2个嵌套回复(主要评论 - > [孩子]回复 - > [孩子]回复回复):
Array ( [0] => stdClass Object ( **[self]** => stdClass Object ( [id] => 1 [page_id] => 47iNetBet [parent_id] => 0 [name] => adam 1 [email] => web@web.de [url] => [comment] => main comment [dt] => 2012-02-23 13:05:13 [ip] => 127.0.0.1 ) **[childs]** => Array ( [2] => stdClass Object ( [self] => stdClass Object ( [id] => 2 [page_id] => 47iNetBet [parent_id] => 1 [name] => adam 2 [email] => web@web.de [url] => [comment] => 1st reply [dt] => 2012-02-23 13:05:25 [ip] => 127.0.0.1 ) **[childs]** => Array ( [3] => stdClass Object ( [self] => stdClass Object ( [id] => 3 [page_id] => 47iNetBet [parent_id] => 2 [name] => adam 3 [email] => web@web.de [url] => [comment] => 2nd reply [dt] => 2012-02-23 13:05:35 [ip] => 127.0.0.1 ) **[childs]** => Array ( ) ) ) ) ) ) )
每个评论的parent_id指的是其父级的ID。如果parent_id为零,那么它是主要评论。这工作正常 - 到目前为止,我已经能够添加尽可能多的嵌套注释,没有任何问题。但似乎只要我从数据库中删除某些内容甚至删除所有注释,然后开始添加新注释(甚至完全相同的注释ID,parent_ids等),在某些时候结构就会搞砸了。从数据库删除注释并使用相同的注释数据重新填充数据库后,这是相同的示例:
Array ( [0] => stdClass Object ( **[self]** => stdClass Object ( [id] => 1 [page_id] => 47iNetBet [parent_id] => 0 [name] => adam 1 [email] => web@web.de [url] => [comment] => main comment [dt] => 2012-02-23 13:05:13 [ip] => 127.0.0.1 ) **[childs]** => Array ( [2] => stdClass Object ( [self] => stdClass Object ( [id] => 2 [page_id] => 47iNetBet [parent_id] => 1 [name] => adam 2 [email] => web@web.de [url] => [comment] => 1st reply [dt] => 2012-02-23 13:14:40 [ip] => 127.0.0.1 ) **[childs] => Array (EMPTY???) ) ) )** [1] => stdClass Object ( [childs] => Array ( [3] => stdClass Object ( [self] => stdClass Object ( [id] => 3 [page_id] => 47iNetBet [parent_id] => 2 [name] => adam 3 [email] => web@web.de [url] => [comment] => 2nd reply [dt] => 2012-02-23 13:14:47 [ip] => 127.0.0.1 ) [childs] => Array ( ) ) ) ) )
正如您在后一个示例中所看到的,第二个孩子(主评论 - >回复 - >回复回复)是一个空数组。这个数组中应该放在最后作为某种独立/不完整的注释,它会破坏显示的流程。如果我删除“评论”表并开始一个新的表格似乎一切正常,直到我再次开始删除内容。
我不知道如何解释,但这很奇怪。我无法想象代码有问题,因为一切看起来都不错。这可能与数据库本身有关吗?也许有人有类似的问题?也许有人可以指出我正确的方向。我甚至不知道从哪里开始寻找。
任何帮助,建议都将不胜感激。
答案 0 :(得分:0)
问题解决了。这确实是代码中的错误。需要以特定顺序获取数据库中的记录(按parent_id按升序排序)。就这么简单。