簡體   English   中英

評分系統:平均評分

[英]Rating system: Pulling in average rating

以下是我執行數據庫搜索並以這種格式返回結果的代碼:
- 研究所名稱1
評分:x / 5
- 研究所名稱2
評分:x / 5

碼:

search_results.php

<?php
  //mysql_
    $connection = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
    if(mysqli_connect_errno())
    {
        die("Database connection failed: " .
                    mysqli_connect_error() .
        " (" . mysqli_connect_errno() . ")");
    }

  $result = "";
  //collect info from database
  if(isset($_POST['search'])) {
      $searchq = $_POST['search'];
      $searchq = preg_replace("#[^0-9a-z]#i", "", $searchq);
      //echo $searchq;
//SQL query
      $query = "SELECT institute_id, name FROM institutes WHERE 
                                 category1 LIKE '%$searchq%' OR
                                 category2 LIKE '%$searchq%' OR
                                 category3 LIKE '%$searchq%' OR 
                                 category4 LIKE '%$searchq%'";
       $result = mysqli_query($connection, $query);

      // Test if there was a query failure   
      if(!$result){
             die("Database query failed.");
         }                                                     
      $count = mysqli_num_rows($result);
      if($count == 0)
      {
          $output = "There's no search result";
      }
      else {
          while($row = mysqli_fetch_assoc($result))
    {
              $id = $row["institute_id"];
    ?>
              <li>
                  <h3>
                    <a href="institute_profile_test.php?id=<?php echo $id; ?>"><?php echo $row["name"];?>
                    </a>
                  </h3>

              </li>
      <div class = "rating">Rating: x/5</div>
    <?php
    }

}
}
      ?>

我的數據庫中有一個評級和機構表,其表結構如下:
等級
研究所

如您所見,評級數據庫已經存儲了一些評級信息(如果需要,我將共享我編寫的用於注冊評級的代碼)

我接下來要做的是獲取每個機構的平均評分,並用每個單獨的平均值替換x。 我要在search_results.php中編寫哪些附加代碼來實現此目標? 我還想按機構的平均排名對機構名稱進行排序。

計算/保存平均值

如果我理解正確,那么您要做的就是創建一個簡單的while循環,該循環遍歷為每個成功的“搜索”查詢所獲取的institute_id的所有實例。

while($row = mysqli_fetch_assoc($result)){
    $id = $row["institute_id"];
    $query2 = "SELECT rating FROM ratings WHERE institute_id ='$id'";
    $result2 = mysqli_query($connection, $query2);
    //average rating vars
    $count = 0;
    $sum = 0;
    while($row2 = mysqli_fetch_assoc($result2)){
         $count++;
         $sum += $row2['rating'];
    }
    $average = $sum / $count;
    //display average
    .....
}

這樣應該可以顯示每個研究所的平均值,然后如果要根據DESCENDING或ASCENDING顯示它們,只需將每個平均值保存在數組中即可。 其余的取決於您,請嘗試將平均結果保存在JSON數組中,並將每個結果與其機構ID計數器部分配對。

例:

$average = array('institute_x' => 'average')

*請確保將“ institute_x”替換為id,並將“平均值”替換為平均值...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM