2012-02-24 91 views
0

enter image description here我在我的數據庫有一個帖子表(我的基於樹的論壇系統) 所有帖子主題的孩子(你可以在我的例子看場topicId這是79) 我所做的是選擇所有具有topicId 79的行(在此具體示例中)平表樹視圖

所以現在,我獲得了所有帖子#79 您可以看到字段parentId。如果帖子回覆該主題,則其值爲NULL 否則,該帖子是另一個帖子的子級,因此它具有父帖子的ID。

現在,當我說我的話題#79 所有的行,我需要在樹視圖

是什麼做的最好的方式來顯示他們呢?

順便說一下,我使用PHP + MySQL支持Yii框架(和不想使用的Zii部件)

感謝您的幫助

回答

1

答案是遞歸。

1.首先,獲取所有「父母職位」(parentId = null的職位)的循環。

2.對於每個「父職位」召喚一個遞歸函數將打印帖子的細節,並會爲其子帖子召喚自己。

我沒有檢查代碼,但這是幫助您解決問題的主要概念。

function build_tree_child($post_id,$level=0) 
{ 
$post = get_post_byId($post_id); 
foreach($i = 0; $i <$level;$i++) echo "&nbsp;"; //Simple trick to make it LOOK like a tree 
echo $post['title']; 

$q = mysql_query("SELECT * FROM posts WHERE parentId='$post_id'"); 
while($childs = mysql_fetch_array($q)) 
    build_tree_child($child['id'] , $level++); 

} 
+0

是否有效地使所有這些查詢僅用於顯示主題線程? – socksocket 2012-02-24 17:42:31

+0

您正在使用YiiFramework,我想它支持Active Record和緩存。 – 2012-02-24 18:45:57