関連記事の紹介
今回は前に投稿したPaginationクラスを使ってページネーションを実装する話をしていきます。
Paginationクラスの投稿記事がこちら↓
ページネーションクラスを作成した話(2年くらい前に作成、少し編集した)
こちらの記事でLIMITを紹介しました。↓
前置き
今回はLIMITとPaginationクラスを使ってページネーションの作成を解説していきます。
ページネーションを実装するにあたり必要な数値はなんだと思いますか?
まず1つ目はデータの総件数ですね。
2つ目は1ページに何件表示するのかです。
3つ目が現在アクセスしているページが何処なのか?です。
ページネーション作成方法
ここから具体的に実装方法をコードを使わずに解説していきたいと思います。
まず、総件数と1ページに表示する件数がわかれば、最大ページ数がわかります。
総件数÷1ページに表示する件数=最大ページ数
になります。例えば、総件数が30件で1ページに表示する件数が5件だとしましょう
30÷5=6になりますね。最大ページ数は6ページということになります。
次に、ページごとのデータの取得はsqlのLIMITに任せればよいので、特に解説しません。
次にページの位置の管理をどうするかですが、通常はPHPの$_GET[‘param_name’](ゲットパラメータ)を使います。
まぁ何が通常なのかは疑問ですが・・・つまりゲットパラメータを使うと簡単だということになります。
ゲットパラメータとは、ワードプレスだと記事のプレビュー画面のurlについていますね。
?p=786&preview=true
です。?のあとのpとpreviewがゲットパラメータの名前です。
pが投稿IDでpreviewはプレビューしているかどうか?をパラメータに渡しています。
最初のページが1だとすると次へのリンクを押すとパラメータが2になるようにして管理します。
実例を交えて解説
(現在のページ数にマイナス1した数字)に(1ページに表示する件数)を掛け算する
とLIMITのカンマ(,)の左側の数字になります。
例えば、現在のページが1だとして1ページに表示する件数が5件だとします。
(1(現在のページ数)- 1)× 5 = 0
LIMITのカンマ(,)の右側には
1ページに表示する件数をLIMITに渡します。
つまり、
LIMIT 0,5となり (LIMIT 開始位置 , 取得件数)
データの0番目の行からデータを5件取得します。(開始位置はindexなため0から始まります。)
*取得する実データは1~5件目
同様に2ページ目は
開始位置 =>(2(現在のページ数)- 1)× 5 = 5 1ページに表示する件数 => 5 LIMIT 5,5
データの5番目の行からデータを5件取得します。(開始位置はindexなため6ではなく5から始まります。)(0から数えて5なので実際は6番目のデータからになる)
*取得する実データは6~10件目
同様に3ページ目は
開始位置 =>(3(現在のページ数)- 1)× 5 = 10 1ページに表示する件数 => 5 LIMIT 10,5
データの10番目の行からデータを5件取得します。(開始位置はindexなため11ではなく10から始まります。)
*取得する実データは11~15件目
今回は以上です。
|