PHP + MYSQL を使用してフォーラムの階層 + ページング表示を実装します </*投稿を保存するためのテーブル構造-------------- -- ------------------------------------- テーブル bbsrow( bbsrow_id int(6) not null auto_increment, //投稿 ID 番号 bbsrow_auth varchar(20) not null, //投稿者 bbsrow_parentid int(6), //投稿者の父親の投稿 ID 番号post 、最初の投稿の場合は空になります bbsrow_title varchar(200) not null, //投稿タイトル bbsrow_returncount int(3), //投稿への返信数 (存在する場合)応答なし、空になります 主キー (bbsrow_id) ); -------------------------------------------------------* / //息子が投稿した再帰関数を表示------------------------------ --------------- ----------- function showchildren($parent_id){ global $connect_id $query=" select * from bbsrow where bbsrow_parentid='" . $parent_id . "' "; " lt ;li>"; echo $myrow_child[0]; echo $myrow_child[1]; echo $myrow_child [2]; echo $myrow_child[3]; e cho $myrow_child[4]; > showchildren($myrow_child[0]); } } echo "" } //---------- ------- -------------------------------- ---------- //データベースに接続し、すべての最初の投稿を $mainrow 配列に入れます------ --------- $connect_id= mysql_connect("localhost","test","test") または die("データベースに接続できません"); mysql_select_db("bbs" ) または die("データベースを選択できません"); query="select * from 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]; 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) $totalpage=$i/$ページサイズ; /" . ceil($totalpage) . "pagen"; echo $info; if($page>0) $pagestr="< ;a href=bbsrow.php4 ?currentpage=" . ($page-1) . ">前のページ"; $pagestr=$pagestr . " [page"; 0;$i<$ totalpage;$i++){ if($i!=$page){ $pagestr=$pagestr . " " $i+1) . " "; } . " "; } } $pagestr . "ページ]"; 次のページn"; echo $pagestr ; //------------------------------------------ ------ ----------------------- //階層表示開始 -------------------------------------- --- ------------- echo "n"; for($i=$start;$i<$end;$i++ ){ echo "n"; echo $mainrow[$i][0]; echo $mainrow[$]; i][ 2]; echo $mainrow[$i][3]; echo $mainrow[$i][4] "n";空ではありません。息子の投稿がある場合、息子の投稿を表示し続けることを意味します if($mainrow[$i][4]!=''){ showchildren($mainrow[$i][0] ); } } エコー ""; ---------- -------------------------------------- ?>