ホームページ  >  記事  >  データベース  >  PHP と MySQL でランダムな順序でページネーションを実装するにはどうすればよいですか?

PHP と MySQL でランダムな順序でページネーションを実装するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-24 08:01:02501ブラウズ

How to Implement Pagination with Random Ordering in PHP and MySQL?

ランダム順序による PHP MySQL ページネーション

Web サイトにページネーションを使用した検索機能を実装する場合、ランダム順序に関連する問題に対処することが重要です。結果の順序付け。この記事では、次の課題に対する解決策を示します:

  1. 後続のページで以前に表示された結果を除外する:
    すでに表示された結果が再度表示されないようにするためのメモリ効率の高い解決策は、次のとおりです。除外リストを使用したページネーションと呼ばれる手法を使用します。これには、表示された結果の ID をセッションまたはデータベースに保存し、後続のクエリから除外することが含まれます。
  2. 最初のページで異なる結果セットを確保する:
    一意であることを保証するには最初のページに一連の結果を表示するには、定数シード値を指定して RAND() 関数を使用できます。訪問のたびにこのシード値を変更することで、ランダムな並べ替えを損なうことなく、確実に新しい順序を確保できます。
  3. シード値の実際の実装:
    MySQL では、RAND( SEED) 関数。SEED はユーザー指定の整数です。ユーザーが最初のページにアクセスするたびにシードを異なる値に設定することで、ランダムでありながら明確な順序付けを実現できます。

例:

<code class="php"><?php
session_start();

// Generate a unique seed value for the first page
if (!isset($_SESSION['seed'])) {
    $_SESSION['seed'] = rand(1, 1000);
}

// Exclude previously seen results
$excludedIds = array();
if (isset($_SESSION['seenResults'])) {
    $excludedIds = $_SESSION['seenResults'];
}

// Query with random ordering and exclusion
$query = "SELECT * FROM table WHERE id NOT IN ('" . implode("', '", $excludedIds) . "') ORDER BY RAND(" . $_SESSION['seed'] . ") LIMIT 10";</code>

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

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