2013-11-25 39 views
0

我正在編寫客戶忠誠度系統。我有一個頁面可以輸入用戶的客戶ID和他們花費的金額。我想把它寫到他們每消費150美元的地方,他們可以得到20美元的貸款,但我碰到了一個障礙。每花費150獲得20積分,但如果花費了160,則不會應用積分

假設用戶的當前餘額爲140美元。他們需要花10美元才能申請信貸。但是,如果他們花費20美元,則他們的餘額將變爲160美元,並且不會應用信用額度。

有什麼建議嗎?

$transac['newBalance'] = $row['balance'] + $transac['amount']; 

    if ($transac['newBalance']%150 == 0) { 
     // +20 to credit 
     $transac['newCredit'] = $row['credit'] + 20; 
     $query = "UPDATE customers SET credit='" . $transac['newCredit'] . "' WHERE userid = '" . $transac['username'] . "'"; 
     if (!mysqli_query($mysqli, $query)) { 
      die("Query Error (" . $query . "): " . mysqli_error($mysqli)); 
     } 
    } 
+0

'%'在大多數編程中(PHP是一種腳本語言,但仍然)語言是**模運算符**,它與除法密切相關。請在此處閱讀更多內容:https://en.wikipedia.org/wiki/Modulo_operation – silkfire

回答

3

你需要考慮新的支出是否把總餘額近$ 150新的多。

$transac['newBalance'] = $row['balance'] + $transac['amount']; 
$oldMultiple = floor($row['balance']/150); //Previous multiple of 150 
$newMultiple = floor($transac['newBalance']/150); //Current multiple of 150 
$difference=$newMultiple-$oldMultiple; //Are they different? 

if ($difference>0) { 
    // +20 to credit for each multiple of $150 that was passed 
    $transac['newCredit'] = $row['credit'] + 20 * $difference; 
    $query = "UPDATE customers SET credit='" . $transac['newCredit'] . "' WHERE userid = '" . $transac['username'] . "'"; 
    if (!mysqli_query($mysqli, $query)) { 
     die("Query Error (" . $query . "): " . mysqli_error($mysqli)); 
    } 
} 
+0

很棒!非常感謝,這正是我需要的! –

4

%這裏是錯誤的操作符。你想要簡單的劃分。你可以通過將他們的總支出除以150並將其舍入來計算出20美元的信用額度。

例如,如果某人已經使用了$ 140 140/150,向下舍入,是0。

如果有人已經使用了$ 310 310/150是2.06;向下取整,你得到2,所以他們有2個20學分,或(2 * 20)40美元。

您可以使用PHP的floor爲圓壓部:

$spent = 140.0; 

$credits = floor($spent/150.0) * 20; # 0 

$spent = 310.0; 

$credits = floor($spent/150.0) * 20; # 40 
+1

除非每次重新設置餘額,否則客戶將不斷獲得相同購買的信用額度。 –