Web アプリケーションでは、大量のデータを表示するときにページング機能が非常に必要になります。人気のある Web 開発言語として、PHP は当然ながらページング実装メソッドを提供します。この記事では、PHPでページングを実装する方法を紹介します。
1. データの取得
ページングを実装する前に、ページングの対象となるデータを取得する必要があります。通常、データベースからデータを取得する必要がありますが、ここでは MySQL データベースを使用し、PDO を介してデータベース接続とクエリ メソッドをカプセル化すると仮定します。以下にクエリ メソッドの例を示します。
function query($sql, $params = []) { $dsn = "mysql:host=localhost;dbname=mydatabase;charset=utf8mb4"; $username = "myusername"; $password = "mypassword"; $options = [ PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ]; try { $pdo = new PDO($dsn, $username, $password, $options); $stmt = $pdo->prepare($sql); $stmt->execute($params); return $stmt->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e) { die("Database error: " . $e->getMessage()); } }
このメソッドを呼び出すことで、データをクエリできます。たとえば、
$result = query("SELECT * FROM mytable");
2. 合計ページ数を計算します。
取得後次の 1 つのステップは、総ページ数を把握することです。総ページ数は次の式で計算できます。
totalPages = ceil(totalItems / pageSize)
このうち、totalItems はアイテムの総数を表し、pageSize は各ページに表示されるアイテムの数を表します。
PHP では、組み込みの ceil() 関数を使用して切り上げることができます。例は次のとおりです:
$totalItems = count($result); $pageSize = 10; $totalPages = ceil($totalItems / $pageSize);
3. 現在のページ データを取得します
次に、現在のページに表示するデータを取得する必要があります。便宜上、現在のページ データを取得する getPageData() 関数を定義できます。この関数は、現在のページ番号 $page と各ページに表示されるエントリの数 $pageSize を渡す必要があります。例は次のとおりです:
function getPageData($data, $page, $pageSize) { $start = ($page - 1) * $pageSize; $end = $start + $pageSize; return array_slice($data, $start, $pageSize); }
この関数は、現在のページ番号に基づいて開始位置と終了位置を計算し、array_slice() 関数を通じて $data 配列から対応するエントリを取得します。例は次のとおりです:
$data = query("SELECT * FROM mytable"); $pageData = getPageData($data, 2, 10); // 获取第2页,每页显示10条数据
4. ページング リンクの生成
最後に最初のステップは、ユーザーが簡単にページをめくることができるようにページネーション リンクを生成することです。次の手順でページング リンクを生成できます:
以下はサンプル コードです:
function getPageLinks($currentPage, $totalPages) { $links = []; for ($i = 1; $i <= $totalPages; $i++) { $isActive = $i == $currentPage; $links[] = [ "page" => $i, "isActive" => $isActive, "url" => "?page=$i", ]; } $prevPage = $currentPage - 1; $nextPage = $currentPage + 1; if ($prevPage >= 1) { array_unshift($links, [ "page" => $prevPage, "isActive" => false, "url" => "?page=$prevPage", ]); } if ($nextPage <= $totalPages) { array_push($links, [ "page" => $nextPage, "isActive" => false, "url" => "?page=$nextPage", ]); } return $links; }
この関数は、現在のページ番号と、各ページのページ番号を含む総ページ数に基づいて、対応するリンク配列を生成します。リンク、それが現在のページかどうか、およびリンクの URL。完全なページング リンク配列を取得するには、リンク配列の前に「前のページ」リンクを追加し、その後に「次のページ」リンクを追加します。
使用例は次のとおりです:
$totalPages = ceil($totalItems / $pageSize); $pageLinks = getPageLinks($currentPage, $totalPages);
これまで、PHP でページングを実装する方法のすべての手順を紹介しました。上記の方法により、いくつかの単純な数学的計算と配列操作のみが必要となり、ページング機能を簡単に実装できます。
以上がPHPでページネーションを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。