对树视图的平的桌

时间:2012-02-24 15:32:24

标签: php mysql database treeview yii

enter image description here我的数据库中有一个Post表(用于我的基于树的论坛系统) 所有帖子都是主题的子项(您可以在我的示例中看到字段topicId为79) 我所做的是选择所有具有topicId 79的行(在此特定示例中)

所以现在,我收到了主题#79的所有帖子 你可以看到字段parentId。如果Post回复主题,则值为NULL 否则,帖子是另一个帖子的孩子,所以它有父帖子的id。

现在,正如我所说,我已经拥有主题#79的所有行 我需要在树视图中显示它们

最好的方法是什么?

顺便说一下,我正在使用由Yii Framework提供支持的PHP + MySQL(并且不想使用zii小部件)

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

答案是递归。

1.首先,有一个获取所有“父母帖子”的循环(一个父亲ID为空的帖子)。

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++);

}