私は計算を整理することができましたが、最後の質問が1つしかないので、このページは完了しました。唯一の問題は、それが計算の答えを得ることができるようにすることです、私は一番下のコースの詳細を表示しなければならなかったので、出力は以下のようになります。コースの詳細を最下部に表示しないようにしたい
Student: Mayur Patel (u0867587)
Module: CHI2550 - Modern Database Applications Module Mark: 41 Mark Percentage: 68 Grade: B
Session Session Mark Session Weight
AAB 72 20%
Session Session Mark Session Weight
AAE 67 40%
Module: CHI2513 - Systems Strategy Module Mark: 31 Mark Percentage: 62 Grade: B
Session Session Mark Session Weight
AAD 61 50%
コース:INFO101 - BSC情報通信技術コースマーク:
Student: Mayur Patel (u0867587)
Course: INFO101 - Bsc Information Communication Technology Course Mark: 65
Module: CHI2550 - Modern Database Applications Module Mark: 41 Mark Percentage: 68 Grade: B
Session Session Mark Session Weight
AAB 72 20%
Session Session Mark Session Weight
AAE 67 40%
Module: CHI2513 - Systems Strategy Module Mark: 31 Mark Percentage: 62 Grade: B
Session Session Mark Session Weight
AAD 61 50%
問題は、私が一番下にあるコースの詳細を維持するならば、計算が動作することである:65
私はそれは以下のようになりますので、コースの詳細はモジュールの上に出力することにしたいです。 $ courseGradeの計算が一番下に来るので、それを上に移動すると、計算が機能しません。コースマークは0を表示します。
私の質問はどのようにしてコースの詳細を移動できますか?コースに表示されている計算の答えはまだありますか?もちろん
Below is the code:
$dataArray = array();
while ($row = mysql_fetch_array($result)) {
$dataArray[$row['CourseId']]['CourseName'] = $row['CourseName'];
$dataArray[$row['CourseId']]['Modules'][$row['ModuleId']]['ModuleName'] = $row['ModuleName'];
$dataArray[$row['CourseId']]['Modules'][$row['ModuleId']]['Sessions'][$row['SessionId']]['Mark'] = $row['Mark'];
$dataArray[$row['CourseId']]['Modules'][$row['ModuleId']]['Sessions'][$row['SessionId']]['SessionWeight'] = $row['SessionWeight'];
if($studentId != $row['StudentUsername'])
{
//Student has changed
$studentId = $row['StudentUsername'];
$output .= "<strong>Student:</strong> {$row['StudentForename']} {$row['StudentSurname']} ({$row['StudentUsername']})\n";
}
}
// just for debugging purposes, let's do a print_r of the array
// eliminate this line when you don't need it anymore
// print_r($dataArray);
foreach ($dataArray as $courseId => $courseData) {
// elaborate course data
// elaborate course data
$moduleCount = 0;
$courseTotal = 0;
$courseGrade = 0;
$courseHTML = "";
$courseHTML .= "<br><table><tr><th>Course:</th><td>" . $courseId . " - " . $courseData['CourseName'] . "</td>";
foreach ($courseData['Modules'] as $moduleId => $moduleData) {
// elaborate module data
$moduleHTML = "";
$moduleHTML .= "<br><table><tr><th>Module:</th><td>" . $moduleId . " - " . $moduleData['ModuleName'] ."</td>";
$markTotal = 0;
$markGrade = 0;
$weightSession = 0;
$grade = "";
$sessionsHTML = "";
foreach ($moduleData['Sessions'] as $sessionId => $sessionData) {
// elaborate session data
$markTotal += round($sessionData['Mark']/100 * $sessionData['SessionWeight']);
$weightSession += ($sessionData['SessionWeight']);
$sessionsHTML .= "<table><tr><th>Session</th><th>Session Mark</th><th>Session Weight</th></tr><tr><td>" . $sessionId . "</td><td>" . $sessionData['Mark'] . "</td><td>" . $sessionData['SessionWeight'] ."%</td></tr></table>\n";
}
$markGrade = round($markTotal/$weightSession * 100);
// To count the modules, simply add 1 to the counter
$moduleCount++;
// Add the mark grade to the course total
$courseTotal += $markGrade;
if ($markGrade >= 70) { $grade = "A"; }
else if ($markGrade >= 60 && $markGrade <= 69) { $grade = "B"; }
else if ($markGrade >= 50 && $markGrade <= 59) { $grade = "C"; }
else if ($markGrade >= 40 && $markGrade <= 49) { $grade = "D"; }
else if ($markGrade >= 30 && $markGrade <= 39) { $grade = "E"; }
else if ($markGrade >= 0 && $markGrade <= 29) { $grade = "F"; }
$moduleHTML .= " <th>Module Mark:</th><td>" . $markTotal . "</td><th>Mark Percentage:</th><td>" . $markGrade . "</td><th>Grade:</th><td>" . $grade . " </td></tr></table><br>";
$output .= $moduleHTML . $sessionsHTML;
} // <-- end of sessions foreach
} // <-- end of modules foreach
// at the end of each course, you can calculate the course grade
$courseGrade = ($courseTotal/$moduleCount);
$courseHTML .= " <th>Course Mark:" . $courseGrade . "</th></tr></table>";
$output .= $courseHTML;
//Display the output
echo $output;
} // <-- end of courses foreach
出力の順序を変更しないのはなぜですか? – hakre