コード例 #1
0
 /**
  * @Route("/semester/update/{id}", name="semester_update")
  */
 public function updateAction($id, Request $request)
 {
     //there is an error - Warning: mysqli::prepare(): Couldn't fetch mysqli occurring - check
     // $results = Semester_results::updateGpa($id);
     // //
     // foreach ($results as $result) {
     //     $result->save();
     // }
     // return $this->redirectToRoute('semester_home');
     //With doctrine
     $results = $this->getDoctrine()->getRepository('AppBundle:Semester_results')->findBy(array('semId' => $id));
     $students = $this->getDoctrine()->getRepository('AppBundle:Student')->findAll();
     $modules = $this->getDoctrine()->getRepository('AppBundle:Module')->findBy(array('semId' => $id));
     $moduleCodes = array();
     $moduleCredits = array();
     $moduleIsGpa = array();
     //array to keep GPA/non-GPA
     foreach ($modules as $obj) {
         array_push($moduleCodes, $obj->getCode());
         $moduleCredits[$obj->getCode()] = $obj->getCredits();
         $moduleIsGpa[$obj->getCode()] = $obj->getGpa();
     }
     $gradeObjects = $this->getDoctrine()->getRepository('AppBundle:Grade')->findAll();
     $grades = array();
     foreach ($gradeObjects as $obj) {
         $grades[$obj->getGrade()] = $obj->getMark();
     }
     $em = $this->getDoctrine()->getManager();
     foreach ($students as $student) {
         $gs = $student->getGrades();
         $totalMarks = 0.0;
         $totalCredits = 0.0;
         foreach ($gs as $g) {
             //echo $g->getMCode();
             $code = $g->getMCode();
             if (in_array($code, $moduleCodes) && $moduleIsGpa[$code]) {
                 $totalMarks += $grades[$g->getGrade()] * $moduleCredits[$code];
                 $totalCredits += $moduleCredits[$g->getMCode()];
             }
         }
         $result = $this->getDoctrine()->getRepository('AppBundle:Semester_results')->findOneBy(array('semId' => $id, 'stuId' => $student->getId()));
         if ($result == null) {
             $result = new Semester_results();
             $result->setSemId($id);
             $result->setStuId($student->getId());
         }
         if ($totalCredits > 0) {
             $result->setGPA($totalMarks / $totalCredits);
         } else {
             $result->setGPA(0);
         }
         $result->setSemCredits($totalCredits);
         $em->persist($result);
         $em->flush();
     }
     $results = $this->getDoctrine()->getRepository('AppBundle:Semester_results')->findBy(array('semId' => $id), array('gPA' => 'DESC'));
     $rank = 1;
     $lastGpa = 5.0;
     // // set ranks
     // foreach ($results as $result) {
     //     if ($result->getGpa() == $lastGpa) {
     //         $rank--;
     //     }
     //     $result->setRank($rank);
     //     $rank++;
     //     $lastGpa = $result->getGpa();
     //     $em->persist($result);
     //     $em->flush();
     // }
     //to catch equal ranks
     $lastRank = 0;
     // set ranks
     foreach ($results as $result) {
         if ($result->getGpa() == $lastGpa) {
             $result->setRank($lastRank);
         } else {
             $result->setRank($rank);
             $lastRank = $rank;
         }
         $rank++;
         $lastGpa = $result->getGpa();
         $em->persist($result);
         $em->flush();
     }
     return $this->redirectToRoute('semester_home');
 }
コード例 #2
0
 public static function getSemesterResults($stuId)
 {
     $con = Connection::getConnectionObject()->getConnection();
     // Check connection
     if (mysqli_connect_errno()) {
         echo "Failed to connect to MySQL: " . mysqli_connect_error();
     }
     $results = array();
     //Make an empty array
     $stmt = $con->prepare('SELECT semester_results.id, semester_results.sem_id, semester_results.stu_id, semester_results.GPA, semester_results.rank FROM semester_results WHERE stu_id = ?');
     $stmt->bind_param("s", $stuId);
     $stmt->execute();
     $stmt->bind_result($id, $semId, $stuId, $gPA, $rank);
     while ($stmt->fetch()) {
         $result = new Semester_results();
         $result->id = $id;
         $result->setSemId($semId);
         $result->setStuId($stuId);
         $result->setGPA($gPA);
         $result->setRank($rank);
         array_push($results, $result);
         //Push one by one
     }
     $stmt->close();
     return $results;
 }