ページネーションは比較的単純なので、できるだけ簡単に説明しようと思います。
まず、ほとんどのページネーション シナリオで遭遇する 5 つの用語またはフレーズ (またはパラメーター) を次に示します。
- 制限 (またはページあたりの結果)
- オフセット (一連の結果/レコードを開始する場所)
- 現在のページ
- 合計結果
- ページ数
以下のクエリの例を見てください。
SELECT * FROM products WHERE active = 1 LIMIT 0 , 25
上記の SQL では (mysqli で動作するはずです):
- 25 => 制限 (またはページあたりの結果)
- 0 => オフセットです (つまり、結果またはレコード 0 から開始)
つまり、
give me the results 0 - 24, i.e. the first 25 results
したがって、1000 レコードの製品テーブルがあり、ページごとに 25 レコードのみを表示する Web ページにこれらを表示する必要があると仮定します。最初のページでは、これらは上記の 5 つの用語の値になります。
- 制限 (ページあたりの結果) => 25
- オフセット => 0
- 現在のページ => 1
- 合計結果 => 1000
- ページ数 => 合計結果 / 制限 => 40
通常、オフセットは現在のページと制限に基づいて動的に計算されるため、製品結果のページ 1 の場合、オフセットは次のようになります。
offset = (current page * limit) - limit
i.e. (1 * 25) - 25 = 0
したがって、mysqli クエリは次のようになります。
SELECT * FROM products WHERE active = 1 LIMIT [OFFSET] , [LIMIT]
i.e. SELECT * FROM products WHERE active = 1 LIMIT 0 , 25
商品結果のページ 2 に同じ原則を使用すると、オフセット (または開始結果) は次のようになります。
offset = (current page * limit) - limit
i.e. (2 * 25) - 25 = 25
したがって、mysqli クエリは次のようになります。
SELECT * FROM products WHERE active = 1 LIMIT [OFFSET] , [LIMIT]
i.e. SELECT * FROM products WHERE active = 1 LIMIT 25 , 25
つまり、
give me the results 25 - 49, i.e. the next 25 results starting from record 25
他の項には次の値があります。
- 制限 (またはページあたりの結果) => 25
- 現在のページ => 2
- 合計結果 => 1000
- ページ数 => 40
ページネーションの最も単純な使用例では、変更されるパラメーターはオフセットと現在のページのみです。クエリにフィルターを導入すると、前の 2 つに加えて、結果の合計とページ数も変化する可能性があります。
上記の説明が、ページネーションの基本的な理解に役立つことを願っています。