表示するページの変更

基本解説

大量のデータをページを区切って表示させたいときがあります。その場合、データを配列に格納し、表示したい件数分だけ配列から取り出して表示します。

取り出した配列=arry_slice(元の配列,取り出し開始位置,取り出す件数);

配列の指定した場所からある件数分だけ取り出すにはarry_slice();を用います。開始位置を後から指定するには-(負)を指定します。最後尾は-1です。取り出す件数を指定しなければ開始位置よりすべてを取り出します。取り出す件数が-(負)の場合は、その数を除いた分を取り出します。

取り出し開始位置はページ数との計算により導きます。

サンプル

page.php

<?php
header("Content-type: text/html; charset=shift_jis");
$thisphp="page.php";
$page_line_num=5;#1つのページに表示させたい件数
if(!$page_num=$_GET["page"]){$page_num=1;}#最初は1ページ目とする

$array=array('1行目','2行目','3行目','4行目','5行目','6行目','7行目','8行目','9行目','10行目',
'11行目','12行目','13行目','14行目','15行目','16行目','17行目','18行目','19行目','20行目',
'21行目','22行目','23行目','24行目'
);

$page_array=array_slice($array,($page_num-1)*$page_line_num,$page_line_num);#表示する分だけ別の配列に格納する 配列は0から数えるので処理上は1ページ目は0ページ目とする

print_r($page_array);#現在のページで表示される中身を確認

$next_page=$page_num+1;#次のページ
$back_page=$page_num-1;#前のページ

if($back_page >= 1){$back_str='<a href="'.$thisphp.'?page='.$back_page.'">前へ</a>';}#現在より前のページが存在すれば戻るリンクを作る
else{$back_str='<span style="color:gray">前へ</span>';}#存在しなければグレイ色で薄く表示
if(count($array) > ($next_page-1)*$page_line_num){$next_str='<a href="'.$thisphp.'?page='.$next_page.'">次へ</a>';}#現在より後のページが存在すれば進むリンクを作る
else{$next_str='<span style="color:gray">次へ</span>';}

$all_page_num=count($array) / ($page_line_num-1);#全部のページ数を計算

for($i=1;$i<$all_page_num;$i++){#存在するページ番号を生成
  if($i != $page_num){$page_str.='[<a href="'.$thisphp.'?page='.$i.'">'.$i.'</a>]';}
  else{$page_str.='[<span style="color:gray">'.$i.'</span>]';}
}

print '<p>'.$back_str.' '.$page_str.' '.$next_str.'</p>';#ページを切り替えるリンクを表示する

?>

表示結果 1ページ目(初期ページ)

Array ( [0] => 1行目 [1] => 2行目 [2] => 3行目 [3] => 4行目 [4] => 5行目 )

前へ [1][2][3][4][5] 次へ

表示結果 2ページ目

Array ( [0] => 6行目 [1] => 7行目 [2] => 8行目 [3] => 9行目 [4] => 10行目 )

前へ [1][2][3][4][5] 次へ

※上記は表示サンプルのためリンク先は存在しません。

アンケート

評価を選んで下さい

参考になった
理解できたが参考にはならなかった
理解できなかった

該当するものを選んで下さい

書かれていることが難しい
書かれていることが理解しやすい
内容が乏しい
内容が充実している

感想や意見があれば記入して下さい。
サイト作りの参考にさせていただきます。

このページのトップへ ▲