私は以前にこれを一度尋ねましたが、私は非常に明確な答えを得ることができませんでした。
サイトの評価スクリプトを作成する方法を知る必要があります。10点満点の評価をmysqlに送信するフォームがあります。phpを使用してmysql列から表示される平均評価をどのように取得しますか?
ある人は2つのテーブルを持つことを提案しました。1つはすべての評価用で、もう1つは各ページの平均評価用です。これより簡単な方法はありますか?
ページが評価されるたびに評価を保存する必要があります。たとえば、平均評価を1つの列に保存するだけの場合
ratings (page_id, average_rating)
決定するのは簡単ではありません:
また、すべてが1つの行にフラット化されているため、ユーザーに評価の変更を許可することはできません。MYSQLで平均関数を使用する場合は、2番目のテーブルがなくても実行できます
$result = mysql_query("SELECT AVG(rating) FROM ratings GROUP BY page_id WHERE page_id = '$pageid'");
$rating_for_page = mysql_fetch_row($result);
$rating = $rating_for_page[0];
各評価が別々の行として保存されていると想定していることに注意してください
単一の機能の評価を収集し、FeatureXと言い、列に配置するとFCOLXとすると、次のことができます。
平均の計算は通常、次のようになります。
$myRatings = $dbHandler->fetch(); //generic fetch
$totalRatings = count($myRatings);
$sum = 0;
foreach($myRatings as $index=>$rating){
$sum+=$rating['FCOLX']; //where FCOLX is the column where you have the user rating [1-10];
}
$average = 0;
if($totalRatings>0){
$average = $sum/$totalRatings;
}
結果の平均は、使用する1〜10のスケールになります。
単純な平均は、それ自体では評価としてはあまり良くありません。たとえば、100人が平均8.5で何かに投票した場合、1人の人が他の何かに10を投票すると、より良いランキングになります。
少し前に、興味があるかもしれない同様の質問をしました。