理屈でわかる!! ページネーションの原理を解説(コード無し)

関連記事の紹介

今回は前に投稿したPaginationクラスを使ってページネーションを実装する話をしていきます。

Paginationクラスの投稿記事がこちら↓

ページネーションクラスを作成した話(2年くらい前に作成、少し編集した)

こちらの記事でLIMITを紹介しました。↓

投稿記事をselect文で数を制限してデータとってくる話 wordpressのためのsql

前置き

今回は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件目

今回は以上です。

私は3年位前にこの本を使って勉強していました。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする