質問: ceil($total/$per_page); //何ページ必要かを計算 ?> ``` ``` コメント一覧 コメント一覧 =$comment['comment']?> ```
回答: 要件をどこまで満たしているかは確認してもらいたいですが、イメージとしてはこんな感じでしょうか。 ``` $totalPages = 20; //トータルページ数 $page = 4; //現在のページ $page_width = 2; //現在のページから表示する幅 if($page > 1){ //現在のページが1より大きい場合に<表示 echo " < "; } if(($page-$page_width)>1){ //ページ幅が1より大きい場合に1と...表示 echo 1; echo "..."; } for($i = $page_width; $i>0; $i--){ //中心ページより小さいページ番号を表示 if(($page-$i) < 1) continue; //1未満は表示させない echo ($page-$i)." "; } echo $page." "; //中心ページを表示 for($i = 1; $i<=$page_width; $i++){ //中心ページより大きいページ番号を表示 if(($page+$i) > $totalPages) continue; //最終ページ以上は表示させない echo ($page+$i)." "; } if(($page+$page_width)<$totalPages){ //ページ幅が最終ページより小さい場合に最終ページ番号と...表示 echo "..."; echo $totalPages; } if($page < $totalPages){ // ページが最終ページより小さい場合に>表示 echo ">"; } ``` ただし、GETでpage番号を取得しているようですが、上記コードでは0や最終ページより大きい番号が指定された場合などの考慮はしていません。 ご自身でカスタマイズしてみてください。 追記: いつの間にか要件がたくさん追記されてる^^; 私のコードを確認しましたら分かると思いますが、おおよそ1回のfor文の中でやるのは結構複雑になります。 なので、1個1個切り出して実装していくしかありません。 私のコードでは要件全ては満たせてないと思いますが、ベースとして不足分を追加していけばおそらく実現できると思います。 あとは、がんばってください。