ホームページ >バックエンド開発 >PHPチュートリアル >MySQL の LIMIT と OFFSET を使用してページネーションを実装するにはどうすればよいですか?

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

DDD
DDDオリジナル
2024-12-18 03:51:19736ブラウズ

How do I Implement Pagination With MySQL LIMIT and OFFSET?

MYSQL LIMIT、OFFSET を使用したページネーション

ページネーションは、大きなデータセットを管理可能なチャンクまたはページで表示するために使用される手法です。 MySQL では、これは LIMIT 句と OFFSET 句を使用して実現できます。

質問

ユーザーは、多数の項目を含むデータベース テーブルを持っており、実装したいと考えています。 Web ページ上のページネーション。ユーザーは、ページごとに固定数の項目 (例: 4) を表示するコードをすでに設定していますが、ページの合計数を動的に決定し、ユーザーがページ間を移動できるようにする必要があります。

答え

これを実現するには、ページ分割に URL クエリ パラメーターを使用することをお勧めします。パラメータは、「/itempage.php?page=2」などのページ番号を表す必要があります。サーバー側のコードでは、$_GET['page' を使用してページ番号を取得し、それを使用して SQL クエリの LIMIT 値と OFFSET 値を計算できます。

例:

$page = 1;
if (!empty($_GET['page'])) {
    $page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT);
    if ($page === false) {
        $page = 1;
    }
}

$items_per_page = 4;
$offset = ($page - 1) * $items_per_page;

// Build the SQL query
$sql = "SELECT * FROM menuitem LIMIT " . $offset . "," . $items_per_page;

合計ページ数を決定するには、結果を制限する前に別の SQL クエリを実行します。

$sql = "SELECT COUNT(*) AS total_rows FROM menuitem";
$result = mysqli_query($con, $sql);
$row_count = mysqli_num_rows($result);
mysqli_free_result($result);

$page_count = 0;
if ($row_count === 0) {
    // Handle empty table error
} else {
    $page_count = ceil($row_count / $items_per_page);

    if ($page > $page_count) {
        // Handle out-of-range page request
    }
}

合計ページ数と現在のページを使用してこれで、ページ分割されたコンテンツのナビゲーション リンクを動的に生成できるようになりました。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。