Made full exam mock actual exam by grabbing 1 question per 10 for each section

This commit is contained in:
Daniel Mason 2017-01-03 23:55:42 +13:00
parent 3d98b9a290
commit 9e95985703
3 changed files with 35 additions and 11 deletions

View File

@ -44,6 +44,13 @@ class DataItem {
return $obj; return $obj;
} }
public static function count($query)
{
$db = new db();
$db->query($query);
return array_pop($db->single());
}
public function getId() { public function getId() {
$typeName = static::_getType(); $typeName = static::_getType();
$id = $typeName."_id"; $id = $typeName."_id";

View File

@ -18,9 +18,10 @@ class Question extends DataItem {
return "question"; 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) { foreach ($questions as $q) {
$q->answers = $q->getAnswers(); $q->answers = $q->getAnswers();
shuffle($q->answers); shuffle($q->answers);
@ -28,6 +29,23 @@ class Question extends DataItem {
return $questions; 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() public function getQuestion()
{ {
return $this->questiondata_content; return $this->questiondata_content;
@ -47,4 +65,9 @@ class Question extends DataItem {
{ {
return $this->questiondata_image; return $this->questiondata_image;
} }
public function getCountFromNumber()
{
}
} }

View File

@ -45,11 +45,7 @@ if (isset($_POST['mark'])) {
$user->storeResult($_POST, $score); $user->storeResult($_POST, $score);
} }
} else { } else {
if(isset($_GET['questions'])) { define('QUESTION_COUNT', isset($_GET['questions'])?intval($_GET['questions']):"60");
define('QUESTION_COUNT', intval($_GET['questions']));
} else {
define('QUESTION_COUNT', 60);
}
$questions = Question::getQuestions(QUESTION_COUNT); $questions = Question::getQuestions(QUESTION_COUNT);
} }
?><!doctype html> ?><!doctype html>
@ -95,10 +91,8 @@ if (isset($_POST['mark'])) {
</div> </div>
<div id="header"><h1>Unofficial NZART Practice Exam</h1></div> <div id="header"><h1>Unofficial NZART Practice Exam</h1></div>
<div id="body" class="center"> <div id="body" class="center">
New Exam: <a href="/index.php?questions=10">10 Questions</a> - New Exam: <a href="/index.php?questions=10">10 Questions (Random)</a> -
<a href="/index.php?questions=20">30 Questions (Half Exam)</a> - <a href="/index.php">60 Questions (Full Exam)</a> -
<a href="/index.php?questions=60">60 Questions (Full Exam)</a> -
<a href="/index.php?questions=600">600 Questions (All Questions)</a>
<br/><br/> <br/><br/>
<?php if(isset($score)) { <?php if(isset($score)) {
echo "<h3>Score ".(($score['correct']/$score['total'])*100)."% (".$score['correct']."/".$score['total'].")</h3>"; echo "<h3>Score ".(($score['correct']/$score['total'])*100)."% (".$score['correct']."/".$score['total'].")</h3>";