ページング処理用PHP
2014/07/03
/*
@内容
ページング処理のfunction
@使い方
//******親ページの変更点******
$page(現在のページ)を下記で定義する
if ($_GET["page"]) {
$page = $_GET["page"];
} else {
$page = 0;
}
$page = max($page, 0);
↓↓
functionを読み出す
list($record_limit, $page_max, $page_set, $page_start) = PageSet($page);
↓↓
DB出力の際に$page_start,$page_setを入れる。例は下の通り。
$sql = "SELECT seq, name FROM paging ORDER BY seq LIMIT $page_start, $page_set;";
↓↓
ページングのリンクを出したいところで下記を記載
Paging($page, $page_max, $page_start, $page_set, $record_limit);
//******paging.phpの変更点******
最大レコード数の取得を書き換える必要あり。
//******paging.css******
親ページで下記を読み込む。
<link href="paging.css" rel="stylesheet">
@履歴
2013/02/02 新規作成
2013/02/04 件数表示追加
2013/02/04 CSS追加
*/
//ページングに必要な変数を設定する
function PageSet($page){
//1ページ辺りの表示数を定義
$page_set = 5;
//ページングの起点を定義
$page_start = $page * $page_set;
//最大レコード数の取得***書き換える必要あり***
$sql = "SELECT COUNT(*) AS cnt FROM my_items;";
$row = mysql_query($sql);
$record_limit = mysql_fetch_assoc($row);
//最大レコード数÷1ページあたりの表示数で最大ページ数を出す
$page_max = ceil($record_limit["cnt"] / $page_set);
//返り値
return array($record_limit["cnt"], $page_max, $page_set, $page_start, $page);
}
//ページング表示部分
function Paging($page, $page_max, $page_start , $page_set, $record_limit){
//前後のページ数をセット
$page_zengo = 2;
//ページング表示数をセット
$page_hyouji = $page_zengo*2+1;
//件数の表示用変数をセット
$from = $page_start+1;
$to = ($page_set+$page_start) < $record_limit ? ($page_start + $page_set) : $record_limit; //最後のページいった場合用で条件分岐
//件数の表示
echo "全" . $record_limit . "件中 " . $from . "件~" . $to . "件を表示しています。<br>";
echo '<div>';//CSS用のdiv
//前への処理
if ($page > 0) {
echo '<a href="?page=' . ($page-1) . '">前へ</a> ';
}
//ページング処理
if ($page_max < $page_hyouji){//全体ページがページ表示数未満なら全部表示する
for($i = 0; $i < $page_max; $i++){
if ($i == $page) {
echo ' <a disabled="disabled">' . ($i+1) . '</a> ';
} else {
echo ' <a href="?page=' . ($i) . '">' . ($i+1) . '</a> ';
}
}
} else { //全体ページが5ページ以上の場合
if ($page < 0 || $page > ($page_max-1)){
//現在のページが0未満もしくはページ最大数より小さい場合は何もしない。
} elseif ($page < $page_zengo) {
//現在のページがページ幅より小さい場合は5件表示
for($i = 0; $i < ($page_hyouji); $i++){
if ($i == $page) {
echo ' <a disabled="disabled">' . ($i+1) . '</a> ';
} else {
echo ' <a href="?page=' . ($i) . '">' . ($i+1) . '</a> ';
}
}
} elseif($page >= ($page_max-$page_zengo-1)) { //現在のページが、最大ページ数-ページ幅より大きい場合は5件表示
for($i = ($page_max-$page_hyouji); $i < $page_max; $i++){
if ($i == $page) {
echo ' <a disabled="disabled">' . ($i+1) . '</a> ';
} else {
echo ' <a href="?page=' . ($i) . '">' . ($i+1) . '</a> ';
}
}
} else { //その他の場合
for($i = ($page-$page_zengo); $i < ($page+$page_zengo+1); $i++){
if ($i == $page) {
echo ' <a disabled="disabled">' . ($i+1) . '</a> ';
} else {
echo ' <a href="?page=' . ($i) . '">' . ($i+1) . '</a> ';
}
}
}
}
//次への処理
if ($page < ($page_max-1)) {
echo ' <a href="?page=' . ($page+1) . '">次へ</a>';
}
echo "</div>";//CSS用のdiv
}
関連記事
-
さくらvpsでPHPのエラーログ設定
PHPのエラーログを設定した際のメモ。 vi /etc/php.ini で設定フ ...
-
セレクトメニューとテキストエリアの連動
やりたかった事は、 ・セレクトメニューで何れかを選択すると連動したテキストエリア ...
-
PHPのLocationに変数を入れる
ページ遷移したい際に使う、 header("Location:./aaa.htm ...
-
PHPで改行を含むデータをCSV化する際に表示崩れを防ぐ方法
PHPで改行を含むデータをCSV化した場合、そのCSVファイルをエクセル等で開く ...
-
Composer自体のインストールとmonolog及びTwigをComposer経由でインストールする方法
「Composerで○○をインストール」というのをよく見かけるがComposer ...