2012-12-01 40 views
0

好的,所以我試圖在每次用戶完成任務時獎勵中獎條目,但是當任務獎勵超過某個特定時間時,我想給出多個條目量。當大於定義的數量時給予新的數量

讓我來分解一下。

當用戶完成獎勵$ 0.05或更多的任務時,他們將獲得1個入場積分。我試圖達到的是這個。當他們完成一項價值0.50美元的任務時,他們將獲得額外的1項,然後每增加0.25美元,他們就會得到1美元,因此如果他們完成價值1美元的任務,他們應該總共獲得4項。 1爲最初的0.05美元,1任務價值0.50美元,1美元達到0.75美元,1美元達到1.00美元

我不知道如何去做這件事。因此,當涉及到在數據庫中更新時,我所擁有的就是這個。

if($offprate >= $rafminp || $offcrate >= $rafminc){ 
$stmt=$db->prepare("UPDATE accounts SET jackpot_e=jackpot_e+'1' WHERE username = ?"); 
$stmt->bind_param('s', $username); 
$stmt->execute(); 
} 

這僅僅是最初的$ 0.15

回答

1

我在想太簡單了?

$amount = 0.5; 
$credits = 0; 
switch($amount) { 
    case 0.05: $credits = 1; break; 
    case 0.50: $credits = 2; break; 
    case 0.75: $credits = 3; break; 
    case 1.00: $credits = 4; break; 
} 
$stmt=$db->prepare("UPDATE accounts SET jackpot_e=jackpot_e+'$credits' WHERE username = ?"); 

或甚至:

$all_amounts = array(0.05, 0.50, 0.75, 1.00); 
$credits = array_search($amount, $all_amounts)+1; # returns -1 when not found 

如果您還沒有確切值,使用if-else的級聯更換switch語句。


重新讀你的問題,似乎金額沒有上限。在這種情況下:

$credits = 0; 
if($amount == 0.05) 
    $credits = 1; 
if($amount >= 0.50) 
    $credits = floor(2+($amount-0.50)/0.25); 
+1

你可能要檢查你的斷言'#不需要休息;,只能有一個match' – Crisp

+0

@Crisp:你是完全正確的!尷尬... – knittl

+0

非常感謝你,這應該工作得很漂亮! – kira423

相關問題