ランダム表示のページング
MySQLからデータを持ってくる際に、
ランダムな表示を行ってほしいと言われた。
ただ、1ページあたり20件表示で、検索結果件数が
それ以上ならページをつけてほしいとのこと。
色々悩んだけどMySQLのRAND()関数で解決した。
RAND()でランダムに出力されるのは知っていたけど、
引数を入れることで、ページングに使えるってのはしらなんだ。
■サンプル
$rand = ( isset($_GET['rand']) && is_numeric($_GET['rand']) ) ? $_GET['rand'] : rand(1,100); //クエリが設定されればそれを引き回す。無ければ1-100の間でランダムな数値を設定する
$sql = '
SELECT SQL_CALC_FOUND_ROWS *
FROM testtable AS
ORDER BY RAND(' . $rand . ')
LIMIT ' . $offset . ',' . $limit
;
↑みたいな感じにしておいて、ページングの際に
$randをクエリにつけてあげると上手いこといった。
関連記事
-
-
PHPでキーや値は保持したまま順番を入れ替える
PHPで連想配列のキーや値は保持したまま順番をランダムに入れ替えたかった。一発で ...
-
-
テンポラリテーブルで高速化
5000万件ぐらいデータが入っているテーブルから 日本語検索しないといけないケー ...
-
-
エラー管理まとめ2
これに続いてちょっとだけつまづいた点があったのでメモ。 ■ソース //ページTO ...
-
-
MySQLでdatetime型のカラムから秒は省いて検索する方法
MySQLでdatetime型のカラムに対して「2022-10-07 10:30 ...
-
-
PHPで配列かどうかを調べる
配列か否かを調べたいケースがあり、確認すると ばっちりそのままの関数発見。 is ...
-
-
PHPで日付の比較
以前に「締切日を設けて、今日の日付と比較して分岐させる」というもので 日付の比較 ...
-
-
PHPで土日祝を避ける
広告物を土日祝だけ非表示にしたいと言われ、 できたらPHPで行いたかった。 調べ ...
-
-
MySQLでのエラーについて
エラーログをとるようになってから色々エラーを 見る機会が出来てきたのでメモ。 プ ...
-
-
MySQLのクエリキャッシュ設定
以前クエリキャッシュを設定していたけど、 これだとmysqlを再起動した時に再度 ...
-
-
MySQL/Apacheの再起動
忘れないようにメモ。 ■MySQL service mysqld restart ...
- PREV
- PHPファイルを解析する時に役立つ関数
- NEXT
- PHPでランダムな値を取得するケース諸々