2

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

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

我只是不确定该怎么做。

4

2 回答 2

2

最简单的方法是为每个级别在数据库中插入一票。

for($i = 0; $i < $level; $i++) {
    store_vote($user, $item);
}
于 2011-11-03T04:12:32.473 回答
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 = ?
于 2011-11-03T04:13:14.227 回答