2011-11-09 85 views
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 
+0

你爲什麼不改變輸出的順序? – hakre

回答

1

當然,只是改變你echo你的字符串命令:

$output .= $courseHTML;增加$courseHTML到輸出端。使用$output = $courseHTML . $output;$courseHTML添加到$output的開頭。

請確保您的HTML仍然有效!