ランダム表示のページング
2014/05/16
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をクエリにつけてあげると上手いこといった。
関連記事
MySQLでグループ化したものを条件で絞る(HAVING)
正規化したテーブルがあってその中には idとtagのカラムがある。 でtagの方 ...
PHPからMySQLにシリアライズしたデータを格納
アンケートフォームみたいなのがあって、 今後も定期開催し、尚且つ質問内容は増減す ...
MySQLでホスト指定しても正常に接続できない場合
MySQL自体は動いており、ユーザーも登録されているのに、ホスト名を指定しても正 ...
直近のクエリで発行されたAUTO_INCREMENTの値を取得する
やりたかったことは、 新規登録(INSERT)なら、登録時のAUTO_INCRE ...
MySQLでIPを整数値としてカラムに格納する
MySQLでIPを整数値としてカラムに格納しているケースがあった。今までIPが必 ...