ページング表示メッセージ機能を備えたシンプルなゲストブックをPHPで開発
ページ上のすべてのユーザーコメントを表示し、ページングを通じて表示します。
ページングの一般的な考え方は次のとおりです。まず、各ページに表示する必要があるメッセージの数を決定し、メッセージの合計数を各ページに表示されるメッセージの数で割って、合計ページ数を取得します。均等に分割できない場合は、余りが別ページとなり、総ページ数+1となります。
前のセクションで設定したデータベースの LyDB クラスを引き続き使用します。
ここでは1ページに3つのデータを表示するように設定しています
各ページに表示する数page_size、メッセージ数ly_count、総ページ数page_countをpublic関数を使って配列arrayに代入します
link,$sql); $row = mysqli_fetch_assoc($query); $ly_count=$row["pagecount"]; $page_count=($ly_count%$this->page_size==0)?($ly_count/$this->page_size):($ly_count/$this->page_size+1); $page_info=array("ly_count"=> $ly_count,"page_count"=>(int)$page_count,"page_size"=>$this->page_size); return $page_info; } //......省略 } ?>
パブリック関数を使用して現在のページを$page_noに設定します
現在のページが1未満と判断された場合、現在のページが取得した総ページ数より大きい場合は、最初のページを表示し続けます。最後のページが表示されます
最初と最後のページを決定します
select_page_info(); if(!isset($page_no))$page_no=1; else if($page_no<1)$page_no=1; else if($page_no>$page_info["page_count"])$page_no=$page_info["page_count"]; $first=($page_no-1)*$this->page_size; $sql="select * from ly order by id desc limit $first,$this->page_size "; $query=mysqli_query($this->link,$sql); $page_result=array("page_data"=>$query,"page_info"=>$page_info,"page_no"=>$page_no); return $page_result; } //......省略 } ?>
フロントエンドページにページング機能を追加します