...

View Full Version : Caculation not displaying the correct answer I want



u0867587
11-03-2011, 03:26 PM
I have a calculation issue in my php. I want to add up all of the session marks ($row['Mark']} for each module and display the answer for each module at the end of each module name. Below is my code:


$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; }



BELOW IS THE RESULT IT SHOWS ON THE BROWSER:

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

SO WHAT MY QUESTION IS THAT HOW CAN I FIND THE TOTAL OF EACH MODULE MARK WHICH THE VARIABLE $modulemark = (int)($moduletotal); IS TRYING TO DO BY ADDING UP ALL THE SESSIONS MARKS WITHIN EACH MODULE.

I HAVE TRIED USING SUM(gr.Mark) in the query and using GROUP BY SessionId, ModuleId, StudentUsername, and CourseId but it ends up not being able to display any records. That is why I want to do the calculation using php rather than SQL.

BELOW IS THE QUERY IF YOU WANT TO SEE IT:





$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
";



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum