我正在编写一个客户忠诚度系统。我有一个页面,我在其中输入用户的客户ID和他们的消费金额。我想把它写在他们每花150美元,就可以获得20美元的信用额度,但我遇到了麻烦。
假设用户的当前余额为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));
}
}
%
在这里是错误的运算符。你想要简单的划分。你可以通过将他们的总支出除以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
您需要考虑新支出是否使总余额超过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));
}
}