我已经有一个5星评级系统(用户投票1-5 ...并显示平均分数 - 我有一个页面,他们投票,它插入数据库中的用户名和投票),但我现在希望通过整合某种权重来改进它,这种权重仅用于增加您的投票对内容平均分数的影响。它使你的投票“权衡”比其他情况更多。
我目前有一个$level
(这是一个1-10之间的数字,每个用户有...其中10是最高的,因此影响最大),我想用它来考虑。
我只是不确定如何做到这一点。
答案 0 :(得分:2)
最简单的方法是在每个级别的数据库中插入一个投票。
for($i = 0; $i < $level; $i++) {
store_vote($user, $item);
}
答案 1 :(得分:1)
如果用户具有等级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 = ?