Ortalama Puan komut

3 Cevap php

Ben daha önce bu istediler ama ben çok net bir cevap alamadım.

Ben bir site için bir derecelendirme komut dosyası yapmak için bilmek gerekir. Ben mysql on üzerinden bir değerlendirme gönderen bir form var. Nasıl ortalama değerlendirme php kullanarak mysql sütununda görüntülenebilir almak istiyorsunuz?

Bir kişi, iki tablo olan önerdi; Bütün yorumu için bir ve her sayfanın ortalama puanı için. Bu daha basit bir yöntem var mı?

3 Cevap

Bir sayfa ratd her zaman notunu saklamak isteyeceksiniz. Eğer sadece tek bir sütunda ortalama puanı saklıyorsanız, gibi çünkü

ratings (page_id, average_rating)

Bu belirlemek kolay değildir:

  1. Kaç kullanıcı puan
  2. Yorumu Dağılımı (kaç örneğin, 10 oy)

Her şey tek bir satır içine dümdüz olmuştur çünkü sen, kullanıcıların kendi notunu değiştirmeye izin veremeyiz. Eğer MYSQL ortalama işlevini kullanın eğer ikinci tabloda olmadan yapabilirsiniz

$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];

Ben her derecelendirme ayrı bir satır olarak saklanır varsayarak yaşıyorum dikkat edin

Tek bir özellik için notlarını toplamak eğer FeatureX ve bir sütunda yer o yapabilirsiniz FCOLX Diyelim Diyelim ki:

  1. Mysql AVG inşa () işlevini kullanın
  2. Tüm değerleri almak ve php script ortalama hesaplamak.

Ortalama hesaplanırken genellikle şöyle:

$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;
}

Elde edilen ortalama kullandığınız 1-10 ölçeği için olacaktır.

Basit ortalama bir derece için kendi içinde çok iyi değil. Örneğin, eğer bir yüz kişi daha sonra başka bir şey üzerinde 10 oylama sadece bir kişi bunu daha iyi bir sıralama verecek, 8.5 'lik bir ortalama için bir şey olarak.

Ben ilginizi çekebilecek bir similar question bir süre önce sordum.