勉強したことのメモ

webプログラマ見習いが勉強したことのメモ。

ページング処理用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 . "件中&nbsp;" . $from . "件~" . $to . "件を表示しています。<br>";
echo '<div>';//CSS用のdiv
//前への処理
if ($page > 0) {
echo '<a href="?page=' . ($page-1) . '">前へ</a>&nbsp;';
}
//ページング処理
if ($page_max < $page_hyouji){//全体ページがページ表示数未満なら全部表示する
for($i = 0; $i < $page_max; $i++){
if ($i == $page) {
echo '&nbsp;<a disabled="disabled">' . ($i+1) . '</a>&nbsp;';
} else {
echo '&nbsp;<a href="?page=' . ($i) . '">' . ($i+1) . '</a>&nbsp;';
}
}
} 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 '&nbsp;<a disabled="disabled">' . ($i+1) . '</a>&nbsp;';
} else {
echo '&nbsp;<a href="?page=' . ($i) . '">' . ($i+1) . '</a>&nbsp;';
}
}
} elseif($page >= ($page_max-$page_zengo-1)) { //現在のページが、最大ページ数-ページ幅より大きい場合は5件表示
for($i = ($page_max-$page_hyouji); $i < $page_max; $i++){
if ($i == $page) {
echo '&nbsp;<a disabled="disabled">' . ($i+1) . '</a>&nbsp;';
} else {
echo '&nbsp;<a href="?page=' . ($i) . '">' . ($i+1) . '</a>&nbsp;';
}
}
} else { //その他の場合
for($i = ($page-$page_zengo); $i < ($page+$page_zengo+1); $i++){
if ($i == $page) {
echo '&nbsp;<a disabled="disabled">' . ($i+1) . '</a>&nbsp;';
} else {
echo '&nbsp;<a href="?page=' . ($i) . '">' . ($i+1) . '</a>&nbsp;';
}
}
}
}

//次への処理
if ($page < ($page_max-1)) {
echo '&nbsp;<a href="?page=' . ($page+1) . '">次へ</a>';
}
echo "</div>";//CSS用のdiv
}

 - PHP

  関連記事

Fatal error: [] operator not supported for stringsの対処

Fatal error: [] operator not supported f ...

ユーザーエージェントからブラウザ名、バージョン、OS名判別

/***判別側***/ //ブラウザ情報の取得 function browser ...

no image
PHPでもキャッシュで画像が表示されない

ここみたいにキャッシュの影響と考えられるケースが発生した。 結果的にキャッシュっ ...

PHPでdo-while(0)の利点

社内のソースで do { //処理内容 if ($test) { break; ...

composerでmonologとTwigをインストール

「composerで○○をインストール」というのをよく見かけるがcomposer ...

mPDFで「The /e modifier is …」エラー

pdf関連のPHPライブラリ「mPDF」を使っているページがエラーログにのってお ...

HTTP_Request

社内で、PHP⇒社内システムのページにPOSTで データ飛ばして色々したい場合に ...

PHPで一括出力ではなく、ひとつずつ順次に出力する方法

PHPで重たい処理とかをしている際に、途中報告みたいな形で順次出力させる方法のメ ...

PHPで外部ファイルから配列を取得

やりたかった事。 ①管理画面で必要項目を入力すると、aaa.phpが 生成される ...

PHPでデータをファイルキャッシュさせる(Cache_Lite)

最近携わった案件でPHPでファイルキャッシュをしているシステムがあった。今までフ ...