使用PHP计算总平均评分

时间:2017-06-29 16:02:28

标签: php pdo data-visualization rating

我如何运行PDO查询,然后使用PHP处理结果,根据用户输入的评论输出特定空白的平均评分?

每项审核都根据服务和价格两个标准进行加权。这两个都是0-5,因此最终平均值的权重为10.每个审核基础我目前使用以下代码来计算特定审核的平均评分。

$rating_total = $row['review_service_rating'] + $row['review_price_rating'];

$average_rating = ($rating_total / 100) * 100; 

因此,对于每个评论,有2个sql行用于review_service_rating和review_price_rating,这两个都是5个。

但是,我不确定如何计算所有评分,然后确定10个特定页面的基本等级。

所以我们说我们有3条评论。这篇评论是7 / 10,8 / 10和10/10。从逻辑上讲,我们会将所有数字相加,然后将所有/ 10加起来给我们。 25/30,翻译为83.33或在我的情况下为8/10。这是我不确定如何做的两个步骤。

1 - 从SQL获取所有评级并计算它们

2 - 根据所有评级确定平均值/ 10

当前用于从数据库中提取数据的PDO代码以及每个特定用户拥有的评论数量。

$q = $db->prepare("SELECT * FROM reviews WHERE assigned_id = :review_id ORDER BY review_posted DESC");
         $q->execute(array(':review_id' => $_GET['page_id']));

         $r = $q->fetchAll(PDO::FETCH_ASSOC);

         echo '<br><div class="well">Average Rating</div><br>';

         foreach($r as $row) {

         $q = $db->prepare("SELECT * FROM users WHERE user_id = :review_user_id");
         $q->execute(array(':review_user_id' => $row['user_id']));
         $r = $q->fetch(PDO::FETCH_ASSOC);

         $q = $db->prepare("SELECT COUNT(*) FROM reviews WHERE user_id = :review_user_id");
         $q->execute(array(':review_user_id' => $row['user_id']));
         $user_reviews = $q->fetchColumn();

enter image description here

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:1)

假设每个用户给出x点(限制为10),你必须将它们相加(x)然后除以rating_times,得到平均等级。

例如

SendMail

因此,当用户评分为时,您只需添加一个字段。 然后使用查询SUM来SUM point 向上,再用查询COUNT然后完成。 忘了(x ** / 10 **)。

最后,使用2个平均评级(价格和服务),它们的总和除以2,你得到整体评价。

答案 1 :(得分:0)

以下是您可能要做的事情:

$q = $db->prepare("
      SELECT * 
      FROM review r 
          JOIN users u ON r.user_id=u.id  
          JOIN (SELECT user_id, COUNT(1) as count FROM review GROUP BY user_id) uc ON uc.user_id = u.id 
      WHERE r.assigned_id=:review_id 
      ORDER BY r.review_posted DESC");
$q->execute(array(':review_id' => $_GET['page_id']));
$r = $q->fetchAll(PDO::FETCH_ASSOC);

foreach ($r as $row) {
     // $row should have all fields included in $tables review and users as well as $row[count] would contain the total number of reviews a user made
}

这将包括用户的详细信息以及每个评论的评分详细信息assigned_id

编辑:添加了用户评论的总和。