勉強したことのメモ

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

  関連記事

PHPで指定月の月末日を取得

今月の、だったらdate('t')でいくけど指定月の場合は どうしたらいいのか分 ...

コマンドの実行履歴を確認する

SSH接続した際のコマンド実行履歴を確認したかった。 history で確認でき ...

PHPでログファイルから指定行数表示させる

エラーログを最新分から指定行数表示させる プログラムがあって、どういった作りにな ...

PHPで特定のファイル内のみタイムアウトを無効にする

重たい処理をするページだけ、タイムアウトを無効にする場合のメモ。 以下をPHPフ ...

imgタグとPHPでグラフ作成

プラグインやライブラリを使わずにグラフを作る 機会があったのでメモ。 ■サンプル ...

PHPの配列をファイルに保存してPHPやJSで呼び出す

PHPの配列をファイルとして保存し、別のページからPHPやJavaScriptで ...

PHPでクエリ内容を取得する

エラーログを確認している際によく分からない動作に なっているところがあった。 ペ ...

PHPとajaxでチャットの作成

■ソース ・index.php <? error_reporting(E_ ...

MySQLiでDELETE文

MySQLiでDELETE文 ■ソース $mysqli = new mysqli ...

MySQLiでFOUND_ROWS(全件数取得)

MySQLiでFOUND_ROWS(全件数取得)。 $sql = ' SELEC ...