ホームページ > データベース > mysql チュートリアル > LIMIT と OFFSET を使用して MySQL でページネーション リンクを動的に生成する方法

LIMIT と OFFSET を使用して MySQL でページネーション リンクを動的に生成する方法

Linda Hamilton
リリース: 2024-12-05 15:17:10
オリジナル
866 人が閲覧しました

How to Dynamically Generate Pagination Links in MySQL Using LIMIT and OFFSET?

MySQL LIMIT、OFFSET を使用したページネーション: 動的ページ作成

ページネーションにより、ユーザーはページごとに限られた数の項目を表示することで、大規模なデータセットをナビゲートできます。 MySQL の LIMIT 句と OFFSET 句を利用すると、データの特定のページを効率的に取得できます。

ただし、潜在的なページ番号ごとに個別のページを作成するのは非効率です。代わりに、データベース内の行の合計数に基づいてページ数を動的に決定できます。

ページ数の決定

合計行数を確認するにはページを作成するには、まず別のクエリを使用してテーブル内の行の総数を計算する必要があります。

SELECT COUNT(*) FROM menuitem
ログイン後にコピー

これにより、単一のクエリが返されます。

ページ数の計算

次に、合計行を必要なアイテムごとに割ることで、合計ページ数を計算できます。

$page_count = (int)ceil($row_count / $items_per_page);
ログイン後にコピー

無効なページの調整リクエスト

ユーザーが存在しないページ (例: 3 つしかない場合のページ 5) をリクエストした場合、状況に応じて最後のページまたは最初のページにリダイレクトできます。 .

ページリンクの出力

合計数がわかったらページのリンクのリストを生成できます。現在のページについてはテキストとして表示し、他のページについてはリンクを作成します。

for ($i = 1; $i <= $page_count; $i++) {
  if ($i === $page) { // current page
    echo 'Page ' . $i . '<br>';
  } else { // link to other page
    echo '<a href="/menuitem.php?page=' . $i . '">Page ' . $i . '</a><br>';
  }
}
ログイン後にコピー

改訂コード

動的ページ計算の使用

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

// Get total row count
$sql = "SELECT COUNT(*) FROM menuitem";
$result = mysqli_query($con, $sql);
$row_count = mysqli_num_rows($result);
mysqli_free_result($result);

// Calculate page count
$page_count = (int)ceil($row_count / $items_per_page);

// Double check page is in range
if ($page > $page_count) {
  $page = 1;
}

// Calculate offset
$offset = ($page - 1) * $items_per_page;

// Select limited data
$sql = "SELECT * FROM menuitem LIMIT " . $offset . "," . $items_per_page;
$result = mysqli_query($con, $sql);
// ... (Rest of your code) ...

// Output page links
for ($i = 1; $i <= $page_count; $i++) {
  if ($i === $page) {
    echo 'Page ' . $i . '<br>';
  } else {
    echo '<a href="/menuitem.php?page=' . $i . '">Page ' . $i . '</a><br>';
  }
}
ログイン後にコピー

このコードにより、番号に基づいてページを動的に作成できます。データベース内の行数を削減できるため、ページ番号とオフセットをハードコーディングする必要がなくなります。

以上がLIMIT と OFFSET を使用して MySQL でページネーション リンクを動的に生成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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