|
|
|
สอบถาม อาจารย์ทุกท่านครับ PHP Random mysql ถ้าต้องการสุ่มเมนูทั้งบรรทัด ให้เมนูใน id ตรงกัน |
|
|
|
|
|
|
|
random column ไม่มี มีแต่ random row โดยใช้ ORDER BY RAND()
ดังนั้น ทางเลือก 1 คือ ออกแบบฐานข้อมูลเป็นแบบ relational database
หรือ
2 เก็บข้อมูล คอลัมน์เดียว คั่นรายการด้วย delimiter แล้วจับใส่ array ด้วย explode()
สุดท้ายสุ่มใน PHP ด้วย array_rand() เช่น
Code (PHP)
$a=array("menu1","menu2","menu3","menu4","menu5");
$random_keys=array_rand($a,3);
echo $a[$random_keys[0]]."<br>";
echo $a[$random_keys[1]]."<br>";
echo $a[$random_keys[2]];
อาจเก็บเป็น JSON หรือ serialized data ก็ได้ตามถนัด
อีกวิธี ไม่ต้องแก้ DB แต่ select * มาทั้งหมด
Code (PHP)
$query = "SELECT * FROM tablename";
$result = $sql->query($query);
$rows = [];
while($row = $result->fetch_row()) {
$rows[] = $row;
}
แล้วค่อยสุ่มตามวิธีที่ 2
หรือจะสุ่มเพื่อแสดงผลทันทีในลูปก็ได้ แต่ต้องเข้าใจ loop, object, array, dynamic content, ... เป็นอย่างดี
|
|
|
|
|
Date :
2022-10-06 12:54:14 |
By :
009 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จะ random หรือ จะ shuffle
กรณี random
Code (SQL)
select if(tmp.rnd=1, menu1, if( tmp.rnd=2, menu2, menu3)) rnd_menu
from (select ceil(rand()*4) rnd) tmp , table_name
ส่วนถ้าจะ suffle ต้องเขียน procedure เอง
สร้าง temp table ขึ้นรองรับ ข้อมูล
insert ข้อมูลที่ต้องการลงใน table นั้น
query order by rand()
|
|
|
|
|
Date :
2022-10-07 07:22:41 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|