diff --git a/includes/classes/class.dataitem.php b/includes/classes/class.dataitem.php index 3e5beb9..aa9be85 100755 --- a/includes/classes/class.dataitem.php +++ b/includes/classes/class.dataitem.php @@ -44,6 +44,13 @@ class DataItem { return $obj; } + public static function count($query) + { + $db = new db(); + $db->query($query); + return array_pop($db->single()); + } + public function getId() { $typeName = static::_getType(); $id = $typeName."_id"; diff --git a/includes/classes/class.question.php b/includes/classes/class.question.php index 02973f5..8cae0a8 100755 --- a/includes/classes/class.question.php +++ b/includes/classes/class.question.php @@ -18,9 +18,10 @@ class Question extends DataItem { return "question"; } - public static function getQuestions($count = false) + public static function getQuestions($count) { - $questions = static::getAllWhere(false, "order by rand()", false, $count); + if($count == "60") return self::getExamQuestions(); + $questions = self::getAllWhere(false, "order by rand()", false, $count); foreach ($questions as $q) { $q->answers = $q->getAnswers(); shuffle($q->answers); @@ -28,6 +29,23 @@ class Question extends DataItem { return $questions; } + public static function getExamQuestions() + { + $questions = []; + $i=1; + while ($i<=30) { + $limit = parent::count("SELECT COUNT(*)/10 FROM question WHERE FLOOR(questiondata_number) = ".$i); + $questions = array_merge($questions, self::getAllWhere("FLOOR(questiondata_number) = ".$i, "order by rand()", false, intval($limit))); + $i++; + } + foreach ($questions as $q) { + $q->answers = $q->getAnswers(); + shuffle($q->answers); + } + return $questions; + + } + public function getQuestion() { return $this->questiondata_content; @@ -47,4 +65,9 @@ class Question extends DataItem { { return $this->questiondata_image; } + + public function getCountFromNumber() + { + + } } \ No newline at end of file diff --git a/index.php b/index.php index f2bfe0d..534039c 100755 --- a/index.php +++ b/index.php @@ -45,11 +45,7 @@ if (isset($_POST['mark'])) { $user->storeResult($_POST, $score); } } else { - if(isset($_GET['questions'])) { - define('QUESTION_COUNT', intval($_GET['questions'])); - } else { - define('QUESTION_COUNT', 60); - } + define('QUESTION_COUNT', isset($_GET['questions'])?intval($_GET['questions']):"60"); $questions = Question::getQuestions(QUESTION_COUNT); } ?> @@ -95,10 +91,8 @@ if (isset($_POST['mark'])) {
- New Exam: 10 Questions - - 30 Questions (Half Exam) - - 60 Questions (Full Exam) - - 600 Questions (All Questions) + New Exam: 10 Questions (Random) - + 60 Questions (Full Exam) -

Score ".(($score['correct']/$score['total'])*100)."% (".$score['correct']."/".$score['total'].")";