PHPページネーションの実装方法 | サンプルコードを紹介

ウェブサイト上でコンテンツを効果的に表示するために、ページネーションは欠かせない要素です。

大量のコンテンツを一度に表示せず、ユーザーにとって使いやすいページ単位で分割することで、読みやすさやユーザーエクスペリエンスを向上させることができます。

今回の記事では、PHPを使用してページネーションを実装する方法を初心者向けに詳しく解説します。

プログラミングの経験が浅い方でも理解しやすいように、実際に動くサンプルコードで手順を説明していきます。

ページネーションの導入は、ウェブサイトの速度向上、ユーザビリティの向上、そして検索エンジンランキングの向上につながる可能性があります。それでは、PHPページネーションの基本から始めてみましょう。

PHPのページネーションのサンプルコード

<?php

$itemsPerPage = 10;
$totalItems = 100;
$totalPage = intval(ceil($totalItems / $itemsPerPage));

// 現在のページ番号を取得する(クエリパラメータから取得)
$currentPage = isset($_GET['page']) ? intval($_GET['page']) : 1;
$currentPage = intval(max(1, min($currentPage, $totalPage))); // 範囲を制限

// 現在のページに対応するアイテムを抽出
$items = range(1, $totalItems);
$startIndex = ($currentPage - 1) * $itemsPerPage;
$currentPageItems = array_slice($items, $startIndex, $itemsPerPage);

echo "表示対象Item: " . implode(', ', $currentPageItems) . "<br><br>";

// ページネーションリンクを表示
echo "ページ: ";

if ($currentPage === 1) {
    echo "<< ";
} else {
    echo "<a href='?page=" . $currentPage - 1 . "'><<</a> ";
}

for ($i = 1; $i <= $totalPage; $i++) {
    if ($i == $currentPage) {
        echo "$i ";
    } else {
        echo "<a href='?page=$i'>$i</a> ";
    }
}

if ($currentPage === $totalPage) {
    echo ">>";
} else {
    echo "<a href='?page=" . $currentPage + 1 . "'>>></a> ";
}

上記のファイルはビルトインサーバーで動かす事ができます。

php -S localhost:9000

解説

紹介したサンプルコードは、簡単なページネーションの例です。

実際のプロジェクトでは、データベースからデータを取得する場合や、cssを設定する場合など、さらなるカスタマイズが必要かもしれません。

ユーザー入力値としては $_GET['page'] の値が自由に変更が可能になっていますので、セキュリティにも注意して実装してください。

サンプルコードの実装の解説に戻ります。

初めに $itemsPerPage の変数で何件毎にアイテムを表示するのか指定します。今回は10件毎の表示として設定しています。

$totalItems で全体の表示件数を決定していますが、実際のプロジェクトではデータベースからの COUNT(*) で取得した全体の件数を指定することになります。

ページネーションを表示する上で必要になる値としては

  • 現在のページ数: $currentPage
  • 最大のページ数: $totalPage
  • 表示対象のアイテム配列: $currentPageItems

を導き出す必要があります。

現在のページ数は $_GET['page'] から取得し、最大のページ数は ceil($totalItems / $itemsPerPage) で算出できるので、残りは

$currentPageItems = array_slice($items, $startIndex, $itemsPerPage);

を使うことで、全体の配列 ($items)の何処から($startIndex)何件分 ($itemsPerPage)を指定する事で表示対象のアイテム配列を取得しています。

実際のプロジェクトではデータベースから取得することになるので、MySQLであればOFFSETやLIMITを駆使して表示対象のアイテム配列を取得します。

終わりに

以上、PHPによるページネーションの実装方法をサンプルコードを例に紹介しました。

実際にはプロジェクトで使用しているフレームワークで用意されているページネーション実装を使用した方がいいのですが、実装方法をあらかじめ理解しておく事でトラブル解決の手助けになるはずです。

それでは、今回は最後までお読みいただきありがとうございました。お疲れ様でした。

投稿者


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA