2012-02-24 92 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