用PHP+MYSQL实现论坛里的分级+分页显示
用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 "
\n";
while($$myrow_child=mysql_fetch_row($$result_top)){
echo "";
echo $$myrow_child[0];
echo $$myrow_child[1];
echo $$myrow_child[2];
echo $$myrow_child[3];
echo $$myrow_child[4] . "\n";
//如果回复贴数不为空,则表示有儿子贴,继续显示儿子贴
if($$myrow_child[4]!=''){
showchildren($$myrow_child[0]);
}
}
echo "
";
}
//----------------------------------------------------------------------
//连接数据库并将所有首发贴放到$$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="上一页";
$$pagestr=$$pagestr . " [第 ";
for($$i=0;$$i<$$totalpage;$$i++){
if($$i!=$$page){
$$pagestr=$$pagestr . " " . ($$i+1) . " ";
}
else{
$$pagestr=$$pagestr . " " . ($$i+1) . " ";
}
}
$$pagestr=$$pagestr . "页]";
if($$page<$$totalpage-1) $$pagestr=$$pagestr . "下一页
\n";
echo $$pagestr;
//----------------------------------------------------------------------
//开始分级显示----------------------------------------------------------
echo "
\n";
for($$i=$$start;$$i<$$end;$$i++){
echo "\n";
echo $$mainrow[$$i][0];
echo $$mainrow[$$i][1];
echo $$mainrow[$$i][2];
echo $$mainrow[$$i][3];
echo $$mainrow[$$i][4] . "\n";
//如果回复贴数不为空,则表示有儿子贴,继续显示儿子贴
if($$mainrow[$$i][4]!=''){
showchildren($$mainrow[$$i][0]);
}
}
echo "
\n";
//----------------------------------------------------------------------?>