评级系统:拉平均评级

时间:2016-04-05 20:00:24

标签: php mysql

以下是我的代码,用于进行数据库搜索并以此格式返回结果:
- 学院名称1
评级:x / 5
- 学院名称2
评分:x / 5

代码:

  

search_results.php

public String getCacheValue(String key) throws SQLException{
  try{
       return cache.get(key);
  }catch(ExecutedException ex){
       Throwables.propagateIfInstanceOf(ex.getCause(), SQLException.class);
       Throwables.propagate(ex);
  }
}

我的数据库中有一个评级和机构表,其表格结构如下:
ratings
institutes

正如您所看到的,评级数据库已经存储了一些评级信息。(如果需要,我将分享我编写的代码来注册评级)

我接下来需要做的是提取每个机构的平均评分,并用每个平均值替换x。我在search_results.php写了哪些额外的代码来实现这个目标? 我还想根据平均评分对学院名称进行排序。

1 个答案:

答案 0 :(得分:0)

计算/保存平均值

如果我理解正确,您需要做的就是创建一个简单的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和'average'替换为平均值...