Приветствую.
Есть тест на php.
Делаю так: по умолчанию в обработчике php есть две переменные - $ot и $not - правильные и неправильные ответы, изначально прировнял их к 0, за правильный ответ повышаю $ok на 1, за неправильный - повышаю на один $not.
пример кода:
<?php
$ot = 0;
$not = 0;
if ($_POST[q1] == a){$ot++;} else {$not++;}
if ($_POST[q2] == a){$ot++;} else {$not++;}
?>
В вопросах с радиокнопками проблем нет, только один вариант. А вот в вопросах с checkbox не могу проверить правильность выбранных ответов.
Подскажите, как это реализовать в рамках моего примера.
Вот html код
<div>
<p>1. ВОПРОС 1...</p>
<input name="q1[]" type="checkbox" value="a"> 1</label><br>
<input name="q1[]" type="checkbox" value="b"> 2</label><br>
<input name="q1[]" type="checkbox" value="c"> 3</label><br>
</div>
А вот часть моего php кода
<?php
$ot = 0;
$not = 0;
$q1 = POST_['q1'];
foreach($q1 as $value) {
....
}
?>
Вот что поставить вместо ... я не могу понять. правильный ответ - 1 и 3 чекбокс, например.
Базовый набросок решения. Можно улучшить.
$successCount = 0;
$errorsCount = 0;
$validAnswers = [
'q1' => [1, 3],
'q2' => ['London'],
];
foreach($_POST as $questionKey => $userAnswer) {
// проверяем, что такой вопрос действительно есть в списке
if (!empty($validAnswers[$questionKey])) {
// если не чекбоксы, а "радиобаттон", т.е. только 1 правильный вариант - всё-равно приводим к массиву
$userAnswer = !is_array($userAnswer) ? [$userAnswer] : $userAnswer;
$successCount += array_intersect($userAnswer, $rightAnswers);
$errorsCount += array_diff($userAnswer, $rightAnswers)
}
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости