PHPページングテンプレ
2014/05/21
使いやすいのがあったのでメモ。
$page = ($_GET['page'] && is_numeric($_GET['page'])) ? $_GET['page'] : 0;
$limit = 50;
$offset = $page * $limit;
$sql = '
SELECT *
FROM table
LIMIT ' . $offset . ' , ' . $limit . '
';
if ($max_num > 0) { //$max_numは総件数
$paging_html = '';
$paging_url = 'aaa.php?page=';
$start = ($page - 2 > 0) ? $page - 2 : 0;
$total_page = ceil($max_num / $limit);
$end = min($total_page, $start + 6);
if ($end == $total_page) {
$start = max($start - abs(4 - ($end - $page)), 0);
}
$paging_html .= $max_num . '件中 ' . ($offset + 1) . '-' . ($offset+$line_num) . '件を表示|';
$paging_html .= ($page > 0) ? '<a href="' . $paging_url . ($page - 1) . '"><< 前へ </a>' : '<< 前へ ';
if ($start > 0) {
$paging_html .= '<a href="' . $paging_url . '0">1</a> ... ';
}
for ($i = $start; $i < $end; $i++) {
$paging_html .= ($i == $page) ? '<b>' . ($i + 1) . '</b>': '<a href="' . $paging_url . $i . '">' . ($i + 1) . '</a>';
if ($i != $end - 1) { $paging_html .= '|'; }
}
if ($end != $total_page) {
$paging_html .= ' ... <a href="' . $paging_url . ($total_page - 1) . '">' . $total_page . '</a>';
}
$paging_html .= ($page < $total_page - 1) ? '<a href="' . $paging_url . ($page + 1) . '"> 次へ >></a>' : ' 次へ >>';
}
関連記事
-
-
CodeIgniter4でのメール送信方法(テキスト・HTMLメール)
CodeIgniter4.4.4でテキストメール及びHTMLメールを送信したい。 ...
-
-
PHPにて「一億二千万」等の漢数字と通常の数字(アラビア数字)の相互変換を行う方法
PHPにて漢数字と普通の数字の相互変換を行いたい。例えば「123465789」⇔ ...
-
-
PHPでキーや値は保持したまま順番を入れ替える
PHPで連想配列のキーや値は保持したまま順番をランダムに入れ替えたかった。一発で ...
-
-
PHPのsetcookieで「Cannot modify」エラーの対応方法
PHPでsetcookieを使うと「Warning: Cannot modify ...
-
-
PHPにてメインドメイン⇔サブドメイン間でCookie及びSESSIONを共有する方法
PHPにてメインドメインのサイトで発行したCookie及びSESSIONをサブド ...