[英]PHP calculation is not displaying the correct answer I want?
我的PHP中有一个计算问题。 我想为每个模块加所有会话标记($ row ['Mark']},并在每个模块名称的末尾显示每个模块的答案。以下是我的代码:
$output = "";
$studentId = false;
$courseId = false;
$moduleId = false;
//BELOW IS THE CALCULATION IN PHP
$moduletotal = 0;
while ($row = mysql_fetch_array($result)){
$moduletotal += $row['Mark'];
$modulemark = (int)($moduletotal);
//BELOW IS HOW PHP WILL DISPLAY THE RESULT
($modulemark is at the end of the 3rd (last) if statement)
if($studentId != $row['StudentUsername']) {
$studentId = $row['StudentUsername'];
$output .= "<p><strong>Student:</strong> {$row['StudentForename']} {$row['StudentSurname']} ({$row['StudentUsername']})";
}
if($courseId != $row['CourseId']) {
$courseId = $row['CourseId'];
$output .= "<br><strong>Course:</strong> {$row['CourseId']} - {$row['CourseName']} <br><strong>Year:</strong> {$row['Year']}</p>";
}
if($moduleId != $row['ModuleId']) {
$moduleId = $row['ModuleId'];
$output .= "<p><br><strong>Module:</strong> {$row['ModuleId']} - {$row['ModuleName']} $modulemark</p>";
}
$output .= "<p><strong>Session:</strong> {$row['SessionId']} {$row['Mark']}</p>";
}
echo $output; }
结果显示在浏览器上:
Student: Mayur Patel (u0867587)
Course: INFO101 - Bsc Information Communication Technology
Year: 3
Module: CHI2550 - Modern Database Applications 72 (72 is the answer to the calculation for the first module but this is incorrect at it should also add the 67 and thus become 139)
Session: AAB 72
Session: AAE 67
Module: CHI2513 - Systems Strategy 200 (200 is the answer to the calculation for this module but this is incorrect it should be only 61. But what it has done is that it has added the 72 and 67 from the first module and added it with the 61 in this module)
Session: AAD 61
因此,我的问题是,如何找到每个模块标记的总计$ modulemark =(int)($ moduletotal); 我们正在尝试通过在每个模块中添加所有会话标记来进行此操作。
我尝试在查询中使用SUM(gr.Mark)并使用GROUP BY SessionId,ModuleId,StudentUsername和CourseId,但最终无法显示任何记录。 这就是为什么我想使用php而不是SQL进行计算。
以下是查询,如果您想查看它:
$query = "
SELECT c.CourseName,
st.CourseId, st.Year, st.StudentUsername, st.StudentForename, st.StudentSurname,
m.ModuleName, m.Credits,
s.ModuleId, s.SessionId, s.SessionWeight,
gr.Mark, gr.Grade
FROM Course c
INNER JOIN Student st ON c.CourseId = st.CourseId
JOIN Grade_Report gr ON st.StudentId = gr.StudentId
JOIN Session s ON gr.SessionId = s.SessionId
JOIN Module m ON s.ModuleId = m.ModuleId
WHERE
(st.StudentUsername = '".mysql_real_escape_string($studentid)."')
ORDER BY c.CourseName, st.StudentUsername, m.ModuleName, s.SessionId
";
很明显,当模块更改(或其他任何操作)时,您没有将$moduletotal
重置$moduletotal
0。 您需要检测何时停止求和,发出和/或存储结果,然后重置计数器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.