まず、ユーザーが投票したかどうかを判断するには、投票が追加されるまでフィールドに整数以外のものを格納する必要があります。私はお勧めしNULL
ます。
次に、ユーザーの平均評価用にテーブルに別の列を追加します。これは、値を持たない行の列を使用して計算されnull
ます。半疑似コードの例:
// Get users row from database
// Use a query like:
// SELECT comfort,service,friendliness,food,drinks,toilet,music FROM myTable WHERE user_id = 123;
$row = $db->fetchrow($userid);
// Loop through and find out how many are valid
// Also add values together
foreach($row as $col)
{
if( !is_null($col) )
{
$numValidColumns++;
$totalVote = $totalVote + $col;
}
}
// Calculate user's average
$userAvg = $totalVote/$numValidColumns;
// Add to db for this row in new field you just made
$db->insert(...);
このようなものを使用すると、ユーザーの平均を計算して保存できます。彼らが別の投票を追加した場合、この平均を再計算します。
最後のステップは、すべての行を照会し、ユーザーの平均列の値を合計することです。これを行の総数で割ると、全体の平均が得られます。
それがあなたにとって正しい軌道に乗っていることを願っています。