Random ข้อมูลมาแสดงผล 2 แบบ 2 วิธี
![](https://www.unzeen.com/wp-content/uploads/logo/mysql.jpg)
ในการ random ข้อมูลจาก databse mysql มีหลายวิธี วิธีใครวิธีมัน เมื่อก่อนตอนที่ผมเริ่มทำระบบ elerning ใหม่ๆ ผมทำการ random ข้อสอบโดยการ random ID ที่อยู่ใน array ก่อน จากนั้นนำ ID ที่ได้ไป select จาก MySQL อีกทีหนึง ในตอนนั้นคิดว่าวิธีนี้เป็นวิธีที่สะดวกที่สุดแล้วนะนี้ แต่ตอนนี้มีวิธีใหม่ที่พึงรู้มาจากที่ได้อ่าน manual ของ MySQL ซึ้ง MySQL สามารถที่จะใช้ function rand() ได้เลยโดยที่ไม่ต้องเขียน function เพื่อทำการ random ขึ้นมาเอง เดี่ยวมาลองดูวิธีแรกกันเลย
สมมุติให้ข้อมูลต่างๆ เป็นดังนี้นะครับ
Database Name = rand_db
Table Name = rand_table
และมีข้อมูลภายใน table ดังนี้
ID | Value |
1 | Test 1 |
2 | Test 2 |
3 | Test 3 |
4 | Test 4 |
5 | Test 5 |
6 | Test 6 |
7 | Test 7 |
8 | Test 8 |
9 | Test 9 |
10 | Test 10 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php $arr = array(1,2,3,4,5,6,7,8,9,10); shuffle($arr); for($i=0;$i<count($arr);$i++){ //print $arr[$i]." "; $query = "SELECT * FROM rand_table WHERE ID='".$arr[$i]."'"; $result = mysql_query($query); while ($line = mysql_fetch_array($result)) { print $line["ID"].",".$line["Value"]." "; } } ?> |
1 2 3 4 5 6 7 8 9 | <?php $query = "SELECT * FROM rand_table ORDER BY RAND() LIMIT 0,5"; $result = mysql_query($query); while ($line = mysql_fetch_array($result)) { print $line["ID"].",".$line["Value"]." "; } ?> |
ส่วน ในแบบแรกถ้าต้องการให้แสดงข้อมูลที่ ละ 5 record ก็ทำการเปลี่ยน code ในส่วนของ for ที่แทนจะ for จนถึง count($arr) ก็เปลี่ยนเป็น 5 แทน เท่านี้ก็สามารถที่จะแสดงข้อมูลที่ละ 5 record ได้แล้ว
จะเห็นได้ว่า วิธีที่สอง ทำการ random ได้ง่ายกว่าวิธีแรกแต่ผมก็ยังไม่เคย ลองเหมือนกันว่าใน database ตัวอื่นๆจะมี function rand() ให้ใช้หรือ เปล่า แต่สำหรับวิธีแรกสามารถที่จะนำไปใช้ได้ในทุกๆ database แน่นอน เพราะว่าไม่ได้ใช้ อะไร นอกจาก select เลย
ไม่มีความคิดเห็น:
แสดงความคิดเห็น