ホームページ >データベース >mysql チュートリアル >PHP MySQL でランダムな順序でページネーションを実装するにはどうすればよいですか?

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

Susan Sarandon
Susan Sarandonオリジナル
2024-10-24 07:57:02586ブラウズ

How to Implement Pagination with Random Ordering in PHP MySQL?

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

前述したように、Web サイトはページネーションを使用したコンテンツ ページの検索結果の順序付けで問題に直面しています。システム。使用されている SQL クエリは次のとおりです。

<code class="sql">SELECT * FROM table ORDER BY RAND() LIMIT 0,10;</code>

この問題は 3 つのシナリオで発生します。

  1. 以前に表示された結果の除外: ユーザーがナビゲートしたとき次のページに移動するには、ランダムな順序を維持しながら、以前に表示された結果を後続のクエリから除外する必要があります。
  2. ページ 1 の最新の結果: ユーザーは、最初のページに戻ると常にランダムな順序に遭遇します。ページ。この動作により、このシナリオでページネーションを効果的に利用できるかどうかという疑問が生じます。
  3. シードの実用的な実装: 望ましいランダム順序付けを実現するために MySQL にシード関数を実装する方法を検討します。

解決策:

MySQL RAND(SEED) 関数がこの問題に対処します。ドキュメントに記載されているように、「定数の整数引数 N が指定されている場合、それがシード値として使用されます。」 (http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_rand)。

これをクエリ例に適用すると、順序がランダムのままになるシナリオが得られます。特定のシードに対して一貫性があること:

<code class="sql">SELECT * FROM your_table ORDER BY RAND(351);</code>

ユーザーが最初の結果ページにアクセスしてセッションに保存するたびにシードを変更できます。これにより、後続のページのランダムな順序に影響を与えることなく、最初のページにアクセスするたびに異なるランダムな順序が保証されます。

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

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