勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

ランダム表示のページング

   2014/05/16  PHP MySQL

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をクエリにつけてあげると上手いこといった。

■参考サイト
http://satussy.blogspot.jp/2011/04/mysql.html?m=1

 - PHP MySQL

  関連記事

MySQLでdatetime型にもインデックスを使用して高速化を図る方法

ログ関連のデータを格納するテーブルがあり、集計を行う際に非常に時間がかかった。レ ...

PHPからMySQLデータを取得した際に一括で配列に入れる方法

MySQLからデータを取得して、PHP側で配列に入れる際に今まで一個ずつ書いてい ...

LEFT JOIN

なんとなくで覚えていたMySQLのLEFT JOINを 最近使うことがあり、上手 ...

MySQLのエラーメール送付

MySQLエラーを取得してエラーメール送付。 <? error_repor ...

MySQLで経度緯度から半径○Kmのデータを抽出する方法

経度と緯度をtext型として格納しているMySQLのテーブルがあり、指定した経度 ...