2012-02-23 62 views
-1

我已经实现了一个多级注释系统,注释和回复从SQL数据库中提取出来并存储(通过PHP例程)到一个数组中。这里是具有2个嵌套回复注释的数据结构的一个例子(主要评论 - > [儿童]回复 - > [儿童]回复回复):从数据库中删除项目时出现多级注释错误

Array ([0] => stdClass Object (**[self]** => stdClass Object ([id] => 1 [page_id] => 47iNetBet [parent_id] => 0 [name] => adam 1 [email] => [email protected] [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] => [email protected] [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] => [email protected] [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] => [email protected] [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] => [email protected] [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] => [email protected] [url] => [comment] => 2nd reply [dt] => 2012-02-23 13:14:47 [ip] => 127.0.0.1) [childs] => Array ())))) 

正如你可以在后面的例子中看到的,第二个孩子(主要的意见 - >应答 - >回复回复)是一个空数组。现在应该放在这个阵列中,作为某种独立/不完整的评论来打破显示流程。如果我放弃“评论”表并开始一个新的一切似乎再次正常工作,直到我再次开始删除的东西。

我不知道如何解释,但这很奇怪。我无法想象代码有什么问题,因为一切似乎都很好,否则。难道这不得不对数据库本身做任何事情吗?也许有人有类似的问题?也许有人可以指出我正确的方向。我甚至不知道从哪里开始寻找。

任何帮助,建议将不胜感激。

回答

0

问题解决。这在代码中确实是一个错误。数据库中的记录需要按照一定顺序提取(按parent_id按升序排序)。这很简单。