2012-02-23 2 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가 0이면 기본 주석입니다. 이것은 잘 작동합니다 - 지금까지 아무 문제없이 원하는만큼 많은 중첩 된 주석을 추가 할 수있었습니다. 하지만 내 데이터베이스에서 무언가를 삭제하거나 모든 주석을 삭제 한 다음 새로운 주석 (심지어 정확히 같은 주석 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로 정렬)로 가져와야합니다. 그것만큼이나 간단했습니다.

관련 문제