2012-04-13 10 views
0

私は、ユーザーがページをクリックするたびに、それらの関数の1つがランダムに実行される、約10の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のクエリを許可するかどうかはわからないんだ

を願っていますしかし、配列で。 私はリダイレクトを使うことも考えましたが、リダイレクトを続けていましたが、これは私が望むものではありませんでした。そして、そのURLで良い結果を得るためにURLを改ざんすることができます...

とにかく、それは意味があり、どんな助けも大いに評価されるでしょう:)

答えて

1

私は、この挑戦​​に項目とその値を持つテーブルを持たせることで取り組みます。列の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

+0

ジョーカーの項目があれば何も表示されず、ジョーカーの場合はそれ以外の列が表示されます。そうでなければ、PHPで 'if(rand(1、10)<= 8)return;'を実行し、クエリの実行をスキップするだけです。 –

関連する問題