2

私はすでに5つ星の評価システムを導入しています(ユーザーの投票1〜5 ...そして平均スコアが表示されます-彼らが投票するページがあり、そこにユーザー名と投票がDBに挿入されます)が、今は改善したいと思いますそれは、あなたの投票がコンテンツの平均スコアに与える影響を増やすためだけに機能するある種の重みを統合することによってです。それはあなたの投票をそうでない場合よりも「重く」します。

私は現在$level(各ユーザーが持っている1から10の間の数です...ここで10が最も高いので、最も効果があります)、検討のために使用したいと思います。

これをどうやってやるのかよくわかりません。

4

2 に答える 2

2

これを行う最も簡単な方法は、レベルごとにDBに1票を挿入することです。

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 に答える