勉強したことのメモ

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

  関連記事

PHPで複数の変数に同じ値を代入する

PHPのソースで $a = $b = $c = 12; みたいな見たことの無い代 ...

PHPで複数の送信先に一括でメールを送る方法

PHPで複数の送信先に一括でメールを送信したかった。配列とかで指定するのかと思っ ...

メールサーバーを構築せずにGmailのSMPTを使ってPHPでメール送信

メールサーバーが立てられなかったり、無料サーバーのため使えなかったりといった場合 ...

Basic認証がかかっているファイルをPHPで認証突破と取得

Aというサイトにあるベーシック認証がかかっているディレクトリ内のファイルを、Bと ...

MySQLでテーブル構造とデータをコピーする

MySQLで既にあるテーブルとデータに対して実験を行う必要があった。本番テーブル ...

時間と数字のフォーマット

教わったのでメモ。 ・時間の整形 strtotime() 例) $ymd = ' ...

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

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

var_dumpの中に複数値を入れられる

何行もvar_dump書いてたけど一行でいけるみたい。 <?php $ho ...

PHPでサイトマップを動的に生成する

WordPress等のCMSは使っておらず、自動更新するサイトがあり、そのサイト ...

Facebookのタイムラインを取得して表示する方法

Facebookのタイムラインを取得してきて、表示させたいという案件があった。 ...