免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 971 | 回复: 0
打印 上一主题 下一主题

非递归法实现论坛树型结构及分页 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-01-17 13:56 |只看该作者 |倒序浏览
现将本人的实践结果show给大家,不足之处就是分页的方法不太好,不能显示具体的页数,可实在又没有其它更好的解决办法,只好先如此了,如果哪位有类似本论坛的分页方法,表赐教一二,二泉不胜感激!具体可访问我的个人小网站:
http://web.nyist.net/~wbgwrq
,不废话了,开始吧......
//表的结构如下:
//creat.sql
//简单说明:RootId 论题序数;Layer:帖子层次,缩进的依据;Orders:帖子的顺序
CREATE TABLE over_post (
  id int(11) NOT NULL auto_increment,
  title varchar(80) NOT NULL default ',
  content text,
  postat datetime NOT NULL default '0000-00-00 00:00:00',
  readed int(11) NOT NULL default '0',
  size int(11) NOT NULL default '0',
  rootid int(11) NOT NULL default '0',
  orders int(4) NOT NULL default '0',
  layer int(4) NOT NULL default '0',
  PRIMARY KEY  (id)
) TYPE=MyISAM;
//creat.sql End
//发表根帖,即RootId,Layer,Orders为0的帖子
//said.php
//begin
  
     
      
        你的想法:
        
      
      
        
      
   
     
      
        你的内容:
        
      
      
        
      
   
     
      
      
   
     
      
         
         
         
        
      
   
  
  
//said.php End
//帖子内容,且在本页进行跟帖
//content.php
//Begin
$result=mysql_query("select
over_post.title,over_post.content,over_post.postat,over_post.readed,over_post.rootid,over_post.la
yer,over_post.orders from over_post where over_post.id=$id");
$readed=mysql_result($result,0,"readed");
$title=mysql_result($result,0,"title");
$content=mysql_result($result,0,"content");
$date=mysql_result($result,0,"postat");
$rootid=mysql_result($result,0,"rootid");
$orders=mysql_result($result,0,"orders");
$layer=mysql_result($result,0,"layer");
?>
   
   发表人:
  
   
     主 题:
     《》  【
Readed:】  
              
   
     内 容:
     
   
  论坛发表跟帖
  
   
      
         
          题目:
        
         
         
        
      
      
         
          内容:
        
         
         
        
      
      
        
        
      
      
         
         
         
         
          ">
          ">
          ">
         
        
      
   
//content.php End
//更新数据库
//post.php
//Begin
if(isset($said))    //发表新帖子
{
$query="insert into over_post
values(null,'$title','$content',$user_id,'$date',0,$length,$img,',',')";
$result=mysql_query($query) or die(mysql_error());
$r=mysql_query("select max(id) from over_post");
$rootid = mysql_result($r,0)+0;
mysql_query("update over_post set rootid=$rootid where ID=$rootid")or die(mysql_error());
}
if(isset($reply)):    //发表跟帖
mysql_query("update over_post set orders=orders+1 where rootid=$rootid and orders>$orders")or
die(mysql_error());
$layer=$layer+1;
$orders=$orders+1;
$query="insert into over_post
values(null,'$title','$content',$user_id,'$date',0,$length,$img,$rootid,$orders,$layer)";
$result=mysql_query($query) or die(mysql_error());
endif;
     if($result) {
    include"list.php";
}
?>
//post.php End
//重头戏,显示所有帖子,并实现分页
//list.php
//Begin
0)) $maxid1=0;
if(!($startid1>0)) $startid1=0;
$totalid1 = $maxid1; //这是真正的最大的rootid值, $maxid1要根据$nextmaxid1变的
if($nextmaxid1>0) $maxid1=$nextmaxid1; //翻页
//计算最小rootid:注意下面的desc,与limit结合,保证选取记录的范围.
//如果使用asc, 在mysql_result中检索第0个,将大大错误!
$itemsperpage=30;
$query="select distinct rootid from over_post where rootid
$itemsperpage";
$r=mysql_query($query);
$n=mysql_num_rows($r);
if($n>0) {
  $minid1=mysql_result($r,$n-1);
$query="select * from over_post where rootid=$minid1 order by rootid
desc,orders";
$result=mysql_query($query);
$num=mysql_num_rows($result);
}
else {
  $minid1=0;
  $maxid1=0;
  echo "没有更多的发言内容";
}
$query="select distinct rootid from over_post where rootid>$maxid1 order by rootid limit
$itemsperpage";
$r=mysql_query($query);
$n=mysql_num_rows($r);
if($n>0) $up=mysql_result($r,$n-1);
else $up=$totalid1;
$query="select distinct rootid from over_post where rootid
$itemsperpage";
$r=mysql_query($query);
$n=mysql_num_rows($r);
if($n>0) $down=mysql_result($r,0);
else $down=$maxid1;
?>
  
     
      
href="javascript:window.location.reload()" class=a1>刷新
        首页 " class=a1>
上页
        " class=a1>下页  
:$startid1-$totalid1 ";?>
        
   
     
      
";
while ($array=mysql_fetch_array($result)){
        $id=$array["id"];
        $title=$array["title"];
        $content=$array["content"];
        $postat=$array["postat"];
        $readed=$array["readed"];
        $size=$array["size"];
            if($size==0) $size="无内容";
                else $size.=" Bytes";
        $rootid=$array["rootid"];
        $orders=$array["orders"];
        $layer=$array["layer"];
            
        $ul="";        //开始树型结构
        $_ul="";
    for($j=0;$j";
            $_ul=$_ul."";   
            }
echo $ul.""."$title($size) 【
".作者."】 $postat  
".$_ul;
flush();
                //树型结构结束
}
?>
   
     
      
href="javascript:window.location.reload()" class=a1>刷新
        首页 " class=a1>
上页
        " class=a1>下页  
:$startid1-$totalid1 ";?>
        
   
  


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/13004/showart_68517.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP