- ベストアンサー
[PHP+MySQL] データをランダムに表示する方法について(order by)
ID ・ 名前 ・ 都道府県名 ・ エリア名 ・ TEL というデータがあります。 表示順序(order by)ですが、都道府県名・エリア名の順で表示させたいのですが、 その次の順序条件をランダムに表示したいのです。 つまり、都道府県名・エリア名が同じデータの場合に、決まった順序ではなく、ランダムにすることによって、公平な順序条件で表示したいのです。 (誰もが上に表示されたいと思っています。なので、ランダムにすることによって、公平になるのではないかと考えました。ランダム表示以外にも、良い案があれば教えて頂きたいです。) どなたか、良い方法があれば、ご指南頂ければ有難いです。宜しくお願い致します。 <?php require_once("../***.php"); $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD); $selectdb = mysql_select_db($DBNAME, $con); $sql = "select * from YTABLE order by ken, area, ★"; $rst = mysql_query($sql, $con); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <title></title> </head> <body> <table border="1" cellspacing="0" cellpadding="10"> <?php while($col = mysql_fetch_array($rst)) { ?> <tr> <td><?php echo $col["name"]; ?></a></td> <td><?php echo $col["ken"]; ?></a></td> <td><?php echo $col["area"]; ?></a></td> <td><?php echo $col["tel"]; ?></a></td> </tr> <?php } ?> </table> </body> </html> <?php mysql_free_result($rst); $con = mysql_close($con); ?>
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
order by ken, area, rand()"; じゃだめ?
その他の回答 (1)
- qaaaq
- ベストアンサー率10% (2/19)
一つのアイディアとして、3番目のソートの条件を id DESC id ASC 名前 DESC 名前 ASC 電話番号 DESC 電話番号 ASC と6通り考えられますがこれをランダムにsqlに追加するロジックを加えれば少しはランダムになりますよね、 さらに組み合わせを取ればかなり乱数チックになると思いますよ
お礼
ありがとうございました。
お礼
ありがとうございました。 rand関数を知りませんでした。 これで、やって見たいと思います。