0
我試圖比較我從用戶獲得的數字和存儲在數據庫中的數字。比較從數據庫和代碼取得的值Yii
基本上,我正在做一個獎勵系統,用戶達到一定數量的積分將被給予一個徽章。現在,我正在做的是,代碼將計算用戶擁有的點數,並將其發送給一個函數,該函數有一個if else用於比較每個徽章的點數和值。
我想現在要做的是,通過將每個徽標的值放入db中以使下一次更新db而不更新代碼更簡單。以下是我現在正在做的事情。
//check total points that the user has
public function totalPointsValue($userId) {
$value = Yii::app()->db->createCommand()
->select('sum(totalPoints) as pointsSum')
->from('fndn_UserTotal')
->where('userId =:id', array(':id'=>$userId))
->queryRow();
$totalPoints = $value['pointsSum'];
return $totalPoints;
}
//checks whether the user points is enough for a badge
public function checkEligable($userId){
$points = $this->totalPointsValue($userId);
//is not eligable for a badge
if ($points <100){
error_log(" $userId has less than 100 points. Number of points is $points ");
}
//eligable for the over 100 points badge
elseif ($points > 100 && $points <1000){
error_log(" $userId is eligable for over-100 badge. Number of points is $points ");
}
//eligable for the over 1000 points badge
elseif ($points > 1000 && $points <2000){
error_log(" $userId is eligable for over-1000 badge. Number of points is $points ");
}
//eligable for the over 2000 points badge
else {
error_log(" $userId is eligable for over-2000 badge. Number of points is $points ");
}
error_log(print_r($points, true), 3, 'debug.log');
}
我想使它的代碼,檢查數據庫中的值,並與$點進行比較。以下是我的徽章數據庫。
==============
id badgeName requiredPoints
1 over100 100
2 over500 500
3 over1000 1000
4 over2000 2000
因此,可以說用戶有600點,它會檢查該徽章的用戶有權接收。如果$ points> requirePoints,它將授予用戶一個徽章。
我還沒有嘗試過這段代碼,但我有一個問題,什麼是最小值和最大值。不太明白@Telvin –
每個徽章級別都需要用戶獲得該徽章所能獲得的收益點標準表(最小 - 最大)。例如:徽章'500以上'需要min = 500&max = 1000,max = 1000,因爲您的表格記錄表明1000是徽章的下一個等級點500 –
我沒有看過您的輸出。可以說這個點是750,我不想要2個值的數組。我只想要超過500個徽章,而不是超過100個徽章。 –