我已經有一個5星評級系統(用戶投票1-5 ...和平均得分顯示 - 我有一個頁面,他們投票,它插入數據庫有用戶名和投票),但是我現在想要通過整合某種權重來完善它,這種權力只是爲了增加您的投票對內容的平均得分的影響。它會讓你的投票「比」更重。將重量集成到5星級投票系統中?
我目前有一個$level
(這是一個1-10之間的數字,每個用戶都有......其中10是最高的,因此效果最好),我想用它來考慮。
我只是不確定如何去做這件事。
我已經有一個5星評級系統(用戶投票1-5 ...和平均得分顯示 - 我有一個頁面,他們投票,它插入數據庫有用戶名和投票),但是我現在想要通過整合某種權重來完善它,這種權力只是爲了增加您的投票對內容的平均得分的影響。它會讓你的投票「比」更重。將重量集成到5星級投票系統中?
我目前有一個$level
(這是一個1-10之間的數字,每個用戶都有......其中10是最高的,因此效果最好),我想用它來考慮。
我只是不確定如何去做這件事。
如果用戶有X級,則可以讓他/她的投票權重爲X級1票。您可以在另一個領域的「權重」添加到表中,並顯示vote*weight
平均:
SELECT AVG(weight * vote)
FROM rating
WHERE item = ?
(其中你需要ID?)
如果你認爲這是對你的需求太複雜(和您已經存儲了投票的用戶),您可以使用此查詢:
SELECT AVG(r.weight * u.level)
FROM rating
JOIN user ON r.user_id = u.id
WHERE r.item = ?
最簡單的方法是在每個級別插入一個投票到數據庫中。
for($i = 0; $i < $level; $i++) {
store_vote($user, $item);
}
+1爲最簡單的可能解決方案。我在這裏看到的唯一缺點是你不能在以後重新計算 - 我更喜歡加權方法,所以如果結果出奇怪,你可以改變權重並重新計算 - 但這當然是最簡單的方法來做到這一點,情景,它會很好。如果這是一個簡單的「超級用戶獲得兩票」,我更傾向於使用它;不能修改權重的固有風險會讓我猶豫是否會用這個10分制。 – Ian
所以表中的權重列將包含用戶投票*級別? – user962026
@ user962026對於最後的評論我很抱歉(誤讀了某些內容):權重列將是用戶的級別(如果它更適合您,可以將其命名爲'級別')。我將它命名爲「權重」,因爲您可以獨立於「級別」來改變它,例如以對數形式。 –