用PHP+MYSQL实现论坛里的分级+分页显示

/*存放贴子的表结构------------------------------------------------------

create table bbsrow(
bbsrow_id int(6) not null auto_increment, //贴子ID号
bbsrow_auth varchar(20) not null, //贴子作者
bbsrow_parentid int(6), //贴子的父亲贴子ID号,如为首发贴则为空
bbsrow_title varchar(200) not null, //贴子标题
bbsrow_returncount int(3), //贴子的回复贴数,如果没有回贴则为空
primary key (bbsrow_id)
);
-----------------------------------------------------------------------------*/

//显示儿子贴的递归函数--------------------------------------------------
function showchildren( $parent_id){
global $connect_id;
$query="select * from bbsrow where bbsrow_parentid='" . $parent_id . "'";
$result_top=mysql_query( $query, $connect_id);
echo "

 1<ul>\n";   
 2while( $myrow_child=mysql_fetch_row( $result_top)){   
 3echo "<li>";   
 4echo $myrow_child[0];   
 5echo $myrow_child[1];   
 6echo $myrow_child[2];   
 7echo $myrow_child[3];   
 8echo $myrow_child[4] . "\n";   
 9//如果回复贴数不为空,则表示有儿子贴,继续显示儿子贴   
10if( $myrow_child[4]!=''){   
11showchildren( $myrow_child[0]);   
12}   
13}   
14echo "</li></ul>

";
}
//----------------------------------------------------------------------

//连接数据库并将所有首发贴放到 $mainrow数组里----------------------------

$connect_id=mysql_connect("localhost","test","test") or die("无法连接数据库");
mysql_select_db("bbs") or die("无法选择数据库");
$query="select * from bbsrow where bbsrow_parentid=''";
$result=mysql_query( $query, $connect_id);

$i=0;
while( $myrow=mysql_fetch_row( $result)) {
$mainrow[ $i][0]= $myrow[0];
$mainrow[ $i][1]= $myrow[1];
$mainrow[ $i][2]= $myrow[2];
$mainrow[ $i][3]= $myrow[3];
$mainrow[ $i][4]= $myrow[4];
$i++;
}
mysql_free_result( $result);
//----------------------------------------------------------------------

//开始构建分页显示------------------------------------------------------

if( $currentpage!=""){
$page= $currentpage;
}
else{
$page=0;
}

$pagesize=10;//每页显示的首发贴数!
$start= $page* $pagesize;
$end= $start+ $pagesize;
if( $end> $i) $end= $i;
$totalpage= $i/ $pagesize;

$info=" 共有" . $i . "条纪录,分" . ceil( $totalpage) . "页,当前为第" . ( $page+1) . "/" . ceil( $totalpage) . "页
\n";
echo $info;

if( $page>0) $pagestr="

1<a "="" $page-1)="" (="" .="" href='bbsrow.php4?currentpage="'>上一页</a>

";
$pagestr= $pagestr . " [第 ";

for( $i=0; $i< $totalpage; $i++){
if( $i!= $page){
$pagestr= $pagestr . "

1<a "="" $i="" .="" href='bbsrow.php4?currentpage="'>" . ( $i+1) . "</a>

";
}
else{
$pagestr= $pagestr . " " . ( $i+1) . " ";
}
}

$pagestr= $pagestr . "页]";

if( $page< $totalpage-1) $pagestr= $pagestr . "

1<a $page+1)="" (="" .="" ."="" href='bbsrow.php4?currentpage="'>下一页</a>
 1<p>\n";   
 2  
 3echo $pagestr;   
 4//----------------------------------------------------------------------   
 5  
 6//开始分级显示----------------------------------------------------------   
 7  
 8echo "<ul>\n";   
 9for( $i= $start; $i&lt; $end; $i++){   
10echo "<li>\n";   
11echo $mainrow[ $i][0];   
12echo $mainrow[ $i][1];   
13echo $mainrow[ $i][2];   
14echo $mainrow[ $i][3];   
15echo $mainrow[ $i][4] . "\n";   
16//如果回复贴数不为空,则表示有儿子贴,继续显示儿子贴   
17if( $mainrow[ $i][4]!=''){   
18showchildren( $mainrow[ $i][0]);   
19}   
20}   
21echo "</li></ul>\n";   
22//----------------------------------------------------------------------?&gt;</p>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus