勉強したことのメモ

webプログラマが勉強したことのメモ。

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

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

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

 - MySQL, PHP

  関連記事

SSH接続でMySQLにデータをインポートする

phpMyAdminが入っていなかったり、SQLファイルが大きかったりという理由 ...

eval関数について

ちょくちょく見ることがあったeval関数について、 なんとなく分かってきたのでメ ...

PHPの構文チェック

JSONLINTみたいにオンラインで構文チェックを できるサイト様があったのでメ ...

WordPressで「データベース接続確立のエラー」

WordPressで設定ファイル(wp-config.php)は触っていないのに ...

mysqldumpが使えないレンタルサーバでMySQLのバックアップ

mysqldumpが使えないレンタルサーバで開発を行うことがあり、尚且つ他社に使 ...

PHPのintval

intvalという見たこと無い関数があったのでメモ。 ■リファレンス http: ...

PHPでdatetime型を分割する

datetime型を年月日時分秒でそれぞれに 分割させたい時に、今まではいちいち ...

Ajaxのクロスドメイン

クロスドメイン対策にて色々あるみたいだけど 簡単そうで尚且つ実践でも使えたのでメ ...

PHPでtry~catch文

PHPでもあるってのを知らなかったのでメモ。 ■参考サイト http://www ...

MySQLでグループ化したものを条件で絞る(HAVING)

正規化したテーブルがあってその中には idとtagのカラムがある。 でtagの方 ...