用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";
//----------------------------------------------------------------------?>


+