2012-04-13 80 views
0

所以我想創建一個腳本,其中大約有十個mysql函數中給用戶一個不同的項目,每當用戶點擊頁面時,其中一個函數就會隨機執行。 這是一種我需要的RPG功能,根據用戶的打獵水平,他們會更成功,但不會總是得到食物。所以他們點擊頁面上的項目數組,隨機返回一個項目,並通過一個mysql_query給它們。從數組中返回隨機化的mysql函數?

我希望是有道理的,如果沒有,讓我知道...

到目前爲止,我已經得到了這些起點

$input = array("value 1", "value 2", "value 3", "value 4", "value 5"); 
$rand_keys = array_rand($input, 1); 
echo $input[$rand_keys[0]] . "\n"; 

我不知道這是否會允許的MySQL查詢在數組中。 我也想過使用重定向的東西,但我試圖保持重定向,這不是我想要的,而且網址可以被篡改以獲得好的結果...

無論如何,我希望這是有道理的,任何幫助將不勝感激:)

回答

1

我會解決這個挑戰,有一個表與項目和它的價值觀。其中一列是prio_drop。如果您想要更頻繁地放棄某個項目,則其值可能爲2,而其他值爲1。價值越高,機會就越大。

然後我會做:

$arr_items = array(1, 2, 3, 5); /* This event can drop items with these ids */ 
$str_items = implode(', ', $arr_items); 

mysql_query(" 
SELECT id, name 
FROM items 
WHERE id IN ({$str_items}) 
ORDER BY (RAND() * prio_drop) DESC 
LIMIT 1 
"); 

希望我理解正確嗎?

+0

非常感謝,這正是我需要的!當所有其他事情都圍繞它完成時,我會嘗試它,但是有什麼方法可以包含它不返回的可能性,以便使用它的人不會總是得到某些東西? – Elizabeth 2012-04-13 16:49:34

+0

我想你可以有一個小丑物品,如果選擇,它不會提供任何東西,並有一個額外的專欄,說明它是不是小丑。否則,你應該簡單地做一個'if(rand(1,10)<= 8)return;'在php中跳過運行查詢。 – 2012-04-13 23:53:18