ホームページ > データベース > mysql チュートリアル > MySQL の LIMIT と OFFSET を使用して PHP でデータベースのページネーションを実装するにはどうすればよいですか?

MySQL の LIMIT と OFFSET を使用して PHP でデータベースのページネーションを実装するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-05 03:13:41
オリジナル
316 人が閲覧しました

How to Implement Database Pagination in PHP using MySQL's LIMIT and OFFSET?

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=&quot;/menuitem.php?page=' . $i . '&quot;>Page ' . $i . '</a><br>';
   }
}
ログイン後にコピー

以上がMySQL の LIMIT と OFFSET を使用して PHP でデータベースのページネーションを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート