关于从数据库查询数据并递归显示的程序

我是一个新手,学php陆续也有一段时间了,近来想自己做个论坛,给我印象最深的论坛是凯利,那里的回复做得很不错,后来我就想是怎么做的,据说是用递归算法实现的,上这里来也没有找到,让后我就自己写了一遍花了不少的心思!
不是为了空间我才不贴出来呢!
说明:这只是一个递归显示的程序,里面还确定了没页显示30个主题
参数是pages当前页数,$b回复的指针
数据机构为:
id
name
title
time//发表时间
re_times//阅读次数
follow//跟随的主题
text//文本内容,显示title主页面是没有用到
设计思想:
follow为跟随主题贴的id
譬如
id title  follow
1    a       0
18   b       1
大家一定猜到了,第一贴是主题,而第18贴为第1贴的子贴!
好了!大家可以看一下我的递归函数了,我目前还没有找到能放php+mysql
的空间,所以效果请大家去bbs.kali.com.cn一看究竟!
当然还有不足,我们下回讨论吧!
请大家多提宝贵意见阿!!
function display($pages=0,$b=0){
                        static $CurrentGrade=0;
                        static $PrevGrade=-1;
                        $NumControll=0;
                        if(!$obj)
                        {$obj=new Member_r;
                        $data=$obj->connect();
                        }else{}
                        $result=mysql_query("select * from text where follow='$b' order by time desc ",$data);
                        $row=mysql_num_rows($result);
                        if($row)//如果当前的follow留言!
                        {   if($CurrentGrade)//当次留言是回复时!修改当次循环的前层指针
                            {$PrevGrade++;}
                            else{}
                        }elseif($PrevGrade==-1){$CurrentGrade=0;return;}
                        else{++$PrevGrade;$CurrentGrade=$PrevGrade;return;}
                        $offset=$pages*30;
                        mysql_data_seek($result,$offset);
                        while(($temp=mysql_fetch_array($result))&&($NumControll<30))
                                {
                                        $time=date("Y-m-j G:I:s",$temp["time"]);
                                        echo "<tr bgcolor=#DDDFB5>";
                                        printf("<td width=150  border=0 height=1><img src=\"images/space.gif\" width=%d height=1><font size=2>%s</font></td>",$CurrentGrade*15,$temp["name"]);
                                        printf("<td width=350  border=0 height=1><font size=2><a href=\"text.php?id=%s\" target=_blank>%s</a></font></td>",$temp["id"],$temp["title"]);
                                        printf("<td width=200  border=0 height=1><font size='2'>%s</font></td>",$time);
                                        printf("<td width=100  border=0 height=1><font size='2'>%d</font></td>",($temp["re_times"]));
                                        echo "</tr>";
                                        display(0,$temp["id"],++$CurrentGrade);//检查当前层的下一层是否有回复!
                                        $PrevGrade=$CurrentGrade-1;
                                        ++$NumControll;
                                }
                          $CurrentGrade=$CurrentGrade-1;
                          return $temp["id"];//第当前层再无回复,重置排列!并顺利返回
         }//显示页面信息,同时控制回复!