У меня проблема с вычислениями в моем 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
";