Я работаю над приложением для викторины, поэтому у пользователей есть MCQ, и при отправке теста мне нужно показать результат.
Вот таблица ответов в mysql дб. Аналогичным образом, существует таблица questions , в которой есть столбцы id и question, содержащие соответственно id вопроса и вопрос.
Итак, я запрашиваю БД из модели, вот так, это возвращает мне ассоциативный массив:
$testQuery = $this->db->query("SELECT quiz_id, correct_option FROM answers");
if ($testQuery->num_rows() > 0) {
return $testQuery->result_array();
}
Здесь я печатаю массив в моем контроллере, который выглядит следующим образом при выполнении foreach:
<code>$allCorrectOptions = $this->DataModel->readCorrectOptions();
$asize = sizeof($allCorrectOptions);
for($i = 0; $i < $asize; $i++){
echo "<pre>";
var_dump($allCorrectOptions[$i]);
echo "
";}
Результат приведенного выше фрагмента:
array(2) {
["quiz_id"]=>
string(2) "13"
["correct_option"]=>
string(13) "Maruti suzuki"
}
array(2) {
["quiz_id"]=>
string(2) "14"
["correct_option"]=>
string(6) "Kotlin"
}
array(2) {
["quiz_id"]=>
string(2) "15"
["correct_option"]=>
string(4) "BOSS"
}
В представлении есть теги радиовхода, а атрибут name содержит массив (allques) с ключом quiz_id , поэтому, когда пользователь отправляет тест, я делаю это, чтобы получить quiz_ids и выбранные значения.
$nums = $this->input->post('allques');
foreach ($nums as $key => $value) {
echo "<br>" . $key . "==" . $value;
}
Результат приведенного выше фрагмента:
13==Maruti suzuki
14==MongoDB
15==Ubuntu Linux
Так что я думаю о том, чтобы получить результат массива из db запрос аналогичен приведенному выше результату фрагмента, так что я могу сравнить значения quiz_id и correct_option с значениями, отправленными пользователем, с помощью al oop, например: correct_answers ++. После этого показывает результат
Если такой подход проверки не эффективен, то есть ли другой способ сделать это правильно.