【发布时间】:2018-01-31 10:30:37
【问题描述】:
我正在尝试提供从 2017 年参加培训课程并就课程提供反馈的人收集的数据。
我想列出 2017 年开设的所有课程,并在每门课程旁边给出平均评分。
我正在使用的两个表是
courses
course_id course_name
---------------------------
1 | Public speaking
2 | Social media skills
feedback
course_id overall_rating
--------------------------
1 | 3
1 | 5
1 | 4
1 | 4
2 | 3
2 | 3
2 | 4
我可以得到课程列表
$yearscourses = "SELECT courseid,coursetitle FROM courses WHERE coursedate1 BETWEEN '2017-01-01' AND '2017-12-31'";
$yearsresult = mysqli_query($connect, $yearscourses);
平均评分与
$avgrating = "SELECT AVG(overall_rating) FROM feedback WHERE courseid='courseid'";
但我正在努力使用 HTML / PHP 在表格中呈现这一点。 我尝试了以下方法,但它只是在每一行中重复相同的平均值。
<table cellspacing="0" table border="1" cellpadding="padding:5px;">
<tr style="font-size:20px; font-weight:bold; text-align:center;">
<td colspan="4">
2017
</td>
</tr><tr style="font-weight:bold;">
<td style="background-color:#AED6F1;">Course ID</td><td style="background-color:#AED6F1;">Course title</td><td style="background-color:#AED6F1;">Average rating</td>
</tr>
<?php
// Get a list of all courses for the year
$yearscourses = "SELECT courseid,coursetitle FROM courses WHERE coursedate1 BETWEEN '2017-01-01' AND '2017-12-31'";
$yearsresult = mysqli_query($connect, $yearscourses);
if (mysqli_num_rows($yearsresult) != 0) // Search has found results
{
$str = "\n";
}
while ($row = mysqli_fetch_array($yearsresult, MYSQLI_ASSOC)) {
// Get average rating for each course
$avgrating = "SELECT AVG(overall_rating) FROM feedback WHERE courseid='courseid'";
$avgresult = mysqli_query($connect, $avgrating);
foreach($avgresult as $row2) {
echo "<tr><td>" . $row['courseid']. "</td><td>" .$row['coursetitle']. "</td><td>".$row2['AVG(overall_rating)']."</td></tr>\n";
$str .= " ";
}
}
$str .= "</table>\n</div>";
echo $str;
?>
【问题讨论】: