在自己制作论坛时,遇到了显示子留言的问题,所以自己写了一个程序来实现把所有属于此留言的子句都显示出来并且按照回复顺序显示!
bbs table 中字段
bbsid //存ID号
hfid //存子ID号
title //存主题
父文章-----首先应该在写内容时hfid字段为0
子文章-----即为回复父文章的,hfid应该存入其父ID号
如果子文章下还有子文章,那hfid应该是起会应的ID号
程序如下:
<?
function getmessagebyfather($fatherid){
$conn=mysql_connect("主机名","用户名","密码");
mysql_select_db("数据库名");
//按时间倒序得到父ID为某一ID的全部消息
$sql="select * from bbs where hfid='".$fatherid."' and hfid!=0";
$result= mysql_query($sql);
//显示传近来的父文章ID,你也可以显示其主题等内容
echo $fatherid."<BR>";
//当没有进一步的子消息时,返回显示节点不在延伸的信息
if(!$result){
mysql_close($conn);
$msgs[0]=0;
return $msgs;
}
$count=0;
//将现在得到的消息信息存入对象中
//并利用这个函数本身去得到进一步的子消息信息
while($obj=mysql_fetch_object($result)){
$count++;
$msgs[$count]=$obj;
echo " ".$obj->title;
$msgs[$count]->child=getmessagebyfather($obj->bbsid);
}
$msgs[0]=$count;
return $msgs;
}
//你可以传一个bbsid过来,把下面那个$bbsid去掉,我在这里只是为了测试用的
$bbsid=71;
getmessagebyfather($bbsid);
for($i=0;$i<$msgs[0];$i++){
echo $msgs;
//echo $msgs[0];
echo "<br>";
$hfcount++;
}
?>
|