0
我設法整理了計算,但只有最後一個問題,然後完成此頁面。唯一的問題是,爲了能夠得到計算的答案,我不得不在底部顯示過程中的細節,因此輸出看起來像下面這樣:想要在頂部而不是底部顯示課程的詳細信息
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 - 理學士信息通信技術當然馬克:65
我想要的課程內容在模塊上方輸出,所以它看起來像下面這樣:
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%
問題是,如果我把課程內容在底部則計算工作。我將它移動到頂端,然後計算將不起作用,因爲$ 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