勉強したことのメモ

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

  関連記事

htmlspecialcharsを通してMySQLに格納したものを元に戻して出力

MySQLにHTMLタグを入れたくない場合にhtmlspecialcharsを使 ...

MySQLでserver has gone~というエラー

MySQLで「MySQL server has gone away」というエラー ...

PHPで文字のあいまい検索(文字のゆれ)

googleとかで検索する際に、ちょっと間違えて 入力してしまっても「もしかして ...

PHPでCSVを出力する際にメモリを節約

MySQLよりデータを大量に取り出してCSV化し、ダウンロードさせるというPHP ...

Cannot re-assign auto-global variableのエラー

PHPバージョンアップに伴い「Fatal error: Cannot re-as ...

phpでhtmlをpdf化。あと無理矢理画像をpdf化

画像をphpでpdf化したかった。 検索してみるもサーバー側の設定を必要とするも ...

PHPで実行時間の測定

$start_time = microtime(true); /***測定したい ...

MySQLでテーブルとデータの複製(コピー)

MySQLでテーブルとデータを複製したかった。ダンプとかではなく、簡単なSQL文 ...

PHPの連想配列と正当性のチェック

ソースの解析中、こんな書き方があったのか、 と思ったのでメモ。 $List = ...

adminerでMySQLに接続しようとするとエラー

新しく構築したサーバにadminerを入れて接続しようとすると、「mysqlnd ...