2013-09-27 69 views
0

基本上我編寫了一個網站,允許用戶發佈體育賽事。然後成員可以評價每個事件。評分系統爲10分制:0.5,1.0,1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0。寫5星級評分系統的最佳方法是什麼?

有四類:

組織,物有所值,設施,娛樂因素

我的值存儲在使用float領域的MySQL數據庫。

我已經使用了以下虛擬數據來測試系統。

  • org = 2,v4m = 4.5,fac = 4,fun = 2.5;
  • org = 3.5,v4m = 4,fac = 4.5,fun = 1.5;
  • org = 1,v4m = 5,fac = 4.5,fun = 2.5;

當根據上面的內容顯示事件評分時,我希望每個類別都輪到上面提到的5星級評分系統。

到目前爲止,我有下面的代碼,除了四捨五入之外,它似乎工作正常。

例如:目前三家機構評級的平均值爲2.1666666666667,我想將其平均爲2.0。如果平均數爲4.6666666666667,我希望它的值爲4.5

但我該怎麼做?

繼承人到目前爲止我的代碼:

// Count how many ratings this event has 
     if($ratingCount = $event->getEventRatingCount($event_id)){ 

      // Get ratings for this event 
      $eventRating = $event->getEventRatings($event_id); 

      $organisation = 0; 
      $valueForMoney = 0; 
      $facilities = 0; 
      $funFactor = 0; 
      $overall = 0; 



      foreach($eventRating AS $rating){ 
       $organisation = ($organisation + $rating['organisation']/$ratingCount); 
       $valueForMoney = ($ValueForMoney + $rating['value_for_money']/$ratingCount); 
       $facilities  = ($facilities + $rating['facilities']/$ratingCount); 
       $funFactor  = ($funFactor + $rating['fun_factor']/$ratingCount); 
      } 
      echo '<br />'; 
      echo $organisation . '<br />'; 
      echo $valueForMoney . '<br />'; 
      echo $facilities . '<br />'; 
      echo $funFactor . '<br />'; 
      echo $overall = ($organisation + $valueForMoney + $facilities + $funFactor)/$ratingCount); 

     }else{ 
      // no ratings for this event 
     } 

隨着虛擬數據我目前得到這些值:

2.1666666666667 
1.6666666666667 
4.3333333333333 
2.1666666666667 
3 

回答

2

你可以乘以2的評級,將其映射到1..10範圍內。然後圍繞它,除以2。

$overall = round(2*$overall)/2; 

如果你想永遠四捨五入使用floor代替round這將映射到4.666 4.5和2.1666〜2的3.888評級將被調高到4。

+0

如果我有50分的評分,這還能工作嗎? – crm

+0

取決於你使用哪個50。如果評分是0.5,1,1.5,...,25:是的,它會的。 – Joni

+0

對不起我的數學是不好的^^;所以只要最高的選擇是5並且使用這兩種方法(你的和我的)就應該沒問題? – crm

0

存儲每個等級到你的數據庫中的表;例如 表

ID |評分

1 | 4.5

2 | 3.5

3 | 3.0

現在創建一個查詢將採取所有值從該表某處,然後創建所有的結果

你基本上只是存儲所有結果的平均值制定的平均

然後根據平均值創建一個開關或if語句來顯示你想要的。

對不起,該號碼/評級沒有出現我沒有料到他們......

+0

所有的評級都存儲在一個數據庫中,對不起編輯我的問題,使其更清晰。 – crm