将重量整合到五星投票系统中?

时间:2011-11-03 04:09:58

标签: php rating drupal-fivestar

我已经有一个5星评级系统(用户投票1-5 ...并显示平均分数 - 我有一个页面,他们投票,它插入数据库中的用户名和投票),但我现在希望通过整合某种权重来改进它,这种权重仅用于增加您的投票对内容平均分数的影响。它使你的投票“权衡”比其他情况更多。

我目前有一个$level(这是一个1-10之间的数字,每个用户有...其中10是最高的,因此影响最大),我想用它来考虑。

我只是不确定如何做到这一点。

2 个答案:

答案 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 = ?