[日記] PHPでページャーを実装してみた

創作サイトを作っていると、ファイル名に連番だったりするほうが管理しやすかったりします。うちでもいただいたイラストはファイル名に連番を使っております(illustration/1.phpなど)
で、より便利に使うため連番を利用してPHPページャーを実装してみました。
要はページの下部に『前のページへ』『次のページへ』というリンクを儲けて、そのリンクもプログラムで自動でやってしまおうといったものです。

WebTecNote – [PHP] ページング機能の仕組みとか作り方とか <http://tenderfeel.xsrv.jp/php/639/>にちょうど良い解説&サンプルがあったので、これを元に加工することにしました。
サンプルソース:

function paging($limit,$page,$disp=5){
//$dispはページ番号の表示数
$page = empty($_GET[“page”])? 1:$_GET[“page”];
$next = $page+1;//前のページ番号
$prev = $page-1;//次のページ番号
if($page != 1 ) {//最初のページ以外で「前へ」を表示
print ‘<a href=”?page=’.$prev.'”>« 前へ</a>’;
}
if($page <$limit){//最後のページ以外で「次へ」を表示
print ‘<a href=”?page=’.$next.'”>次へ »</a>’;
}
/*確認用
print “current:”.$page.”<br>”;
print “next:”.$next.”<br>”;
print “prev:”.$prev.”<br>”;*/
}
$limit = 10;//最大ページ数
$page = empty($_GET[“page”])? 1:$_GET[“page”];//ページ番号
paging($limit, $page);

これを実装すれば『前へ』『次へ』が実装されるはず……でしたが、$_GET[“page”]でページ番号が取得できなかったので加工しました。
加工後:

<?php function paging($limit,$page){
$limit = 9;//最大ページ数
$page =  basename($_SERVER[‘PHP_SELF’],”.php”) ; //ページ番号

$next = $page+1;//前のページ番号
$prev = $page-1;//次のページ番号

if($page != 1 ) {//最初のページ以外で「前へ」を表示
print ‘<a href=”‘.$prev.’.php”>前のページ</a>’;
}
if($page <$limit){//最後のページ以外で「次へ」を表示
print ‘<a href=”‘.$next.’.php”>次のページ</a>’;
}

}

$page =  basename($_SERVER[‘PHP_SELF’],”.php”) ; //ページ番号

paging($limit, $page);
?>

$_SERVER[‘PHP_SELF’]で現在のファイル名を取得して、basenameでファイル名のみ$pageに入れる。$pageに入れた変数を加算&減算して$nextと$prevにつっこむ。
最大ページ数だけ新しいページを作る度に変更しなければならないので、プログラムは別ファイルにしてincludeで読み込むのが一番楽だと思います。
実装ページ→http://test.nekoproject.net/illustration/novel/1.php

  1. お久しぶりです。
    たまに、サイトやブログは拝見はしていますが(^^;;
    $_GETはバージョンとか設定で使えないんですよね。
    ってか、PHPはバージョン違うとコードを公開されていても使えない時がけっこうあります(^^)
    perlだと、レン鯖のバージョンはある程度同じで楽ですけどWEBページ作成ではPHPは便利だけどここが前から自分的にも難点なんですよね・・・

  2. おもわず連投失礼します(^-^;
    良く考えたら、ファイル名がらみで$_GETを使えなかったことでしょうか?
    いまどき、使えない設定やバージョンのレン鯖とかないような気もしたんで・・・

    • くろネコ
    • 2011 10/17 11:46pm

    ご無沙汰ですー。
    ファイル名絡みで使えなかったってことです。php.iniで調べたらわかるものですかね^^;

  1. トラックバック 0

return top