【发布时间】:2017-12-03 10:42:40
【问题描述】:
我将如何运行 PDO 查询,然后使用 PHP 处理结果以根据用户输入的评论输出特定空白的平均评分?
每条评论都根据 2 个标准加权,即服务和价格。这两个都是 0-5,因此最终平均得分为 10。每个评论基础我目前使用以下代码来计算特定评论的平均评分。
$rating_total = $row['review_service_rating'] + $row['review_price_rating'];
$average_rating = ($rating_total / 100) * 100;
因此,对于每条评论,review_service_rating 和 review_price_rating 都有 2 条 sql 行,这两者都满分 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();
【问题讨论】:
-
不是
$average_rating = ($rating_total / 100) * 100只是$rating_total? -
我一直在标签和问题中看到 PDO,但我没有看到任何与数据库相关的内容。在大多数情况下,数据库可以为您计算平均值
-
SELECT ( AVG(review_service_rating) + AVG(review_price_rating) ) AS average_rating, COUNT(review_service_rating) AS num_service_rating, COUNT(review_price_rating) AS num_price_rating FROM reviews WHERE assigned_id = :review_id ORDER BY review_posted DESC对你有用吗?由于平均值从 0 到 5 不等,只需将它们相加即可得到 0 到 10 的总和。 -
@0111010001110000 你有它。当您添加平均值时,结果低于 10。因此,如果您得到
7.1,只需附加字符串/10。如果您需要百分比,( 7.1 / 10 ) * 100(= 71%) 会给您。 -
@0111010001110000 我建议你退后一步,重新考虑你的方法。在我看来,你做了一个简单的连接到一个循环和很多查询。您使用的“加权”和“平均”这两个词实际上并不是您在这里处理的。您只是将 2 个数字相加。
标签: php pdo data-visualization rating