MySQL LIMIT を使用したページネーション、レスポンス付きの OFFSET
ページネーションにより、大きなデータセットをより小さな管理しやすいページに分割できます。これは Web 開発で一般的な手法です。 。 MySQL には、ページネーションを処理するための LIMIT 句と OFFSET 句が用意されています。
問題:
事前定義された項目数ごとにデータベース テーブルのデータを表示するには、複数のページを作成する必要があります。ページ、ただしページネーションをハードコーディングしないロジック。
解決策:
次のような URL でページネーション パラメータを使用します。
http://yoursite.com/itempage.php?page=2
次を使用して、要求されたページ番号にアクセスできます。 $_GET['page'].
ページに基づいてオフセットを動的に計算するように SQL クエリを変更します。数値:
// determine page number from $_GET $page = 1; if(!empty($_GET['page'])) { $page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT); if(false === $page) { $page = 1; } } // set the number of items to display per page $items_per_page = 4; // build query $offset = ($page - 1) * $items_per_page; $sql = "SELECT * FROM menuitem LIMIT " . $offset . "," . $items_per_page;
合計ページ数を決定するには、テーブル内の行数を数える必要があります:
$sql = "SELECT your_primary_key_field FROM menuitem"; $result = mysqli_query($con, $sql); $row_count = mysqli_num_rows($result); // free the result set as you don't need it anymore mysqli_free_result($result); $page_count = 0; if (0 === $row_count) { // maybe show some error since there is nothing in your table } else { // determine page_count $page_count = ceil($row_count / $items_per_page); // double check that request page is in range if($page > $page_count) { // error to user, maybe set page to 1 $page = 1; } }
ページ分割されたデータを表示するときは、適切なリンクを生成する $page 変数と $page_count 変数:
// later when outputting page, you can simply work with $page and $page_count to output links // for example for ($i = 1; $i <= $page_count; $i++) { if ($i === $page) { // this is current page echo 'Page ' . $i . '<br>'; } else { // show link to other page echo '<a href="/menuitem.php?page=' . $i . '">Page ' . $i . '</a><br>'; } }
以上がMySQL の LIMIT と OFFSET を使用して PHP でデータベースのページネーションを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。