Тест на PHP из 2 вопроса
Есть 2 вопроса Код:
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<form action="result.php" method="POST">
<div>
<p>6+4=?</p>
<label><input name="q1" type="radio" value="a">10</label>
<label><input name="q1" type="radio" value="b">1</label>
<label><input name="q1" type="radio" value="c">100</label>
<button>Ответить</button>
</div>
<div>
<p> 50 - 2?</p>
<label><input name="q2" type="radio" value="a">44</label>
<label><input name="q2" type="radio" value="b">48</label>
<label><input name="q2" type="radio" value="c">52</label>
</div>
<button type="submit">Результат</button>
</form>
как сделать так чтобы они выводились по очереди сначала 1 вопрос, после нажатия кнопки ответить второй вопрос?(2 вопроса обязательно должны быть в 1 файле)
Ответы (2 шт):
как сделать так чтобы они выводились по очереди сначала 1 вопрос, после нажатия кнопки ответить второй вопрос?
Добавить соответствующие условия в код. Если не было ответов, выведи 1-й вопрос. Пришел ответ на 1-й? Выведи второй и запомни результат первого. И так далее.
Код ниже - не является оптимальным, не нужно брать его как готовое решение. Задача - лишь проиллюстрировать сказанное выше:
<!DOCTYPE HTML>
<html>
<head></head>
<body>
<?php if (isset($_POST['q1'])) { ?>
<?php $q1_result = ($_POST['q1'] == 'a') ? 1 : 0; ?>
<form action="" method="POST">
<div>
<p> 50 - 2?</p>
<label><input name="q2" type="radio" value="a">44</label>
<label><input name="q2" type="radio" value="b">48</label>
<label><input name="q2" type="radio" value="c">52</label>
<input type="hidden" name="result" value="<?php echo $_POST['result'] + $q1_result; ?>"/>
<input type="submit" value="Результат"/>
</div>
</form>
<?php } elseif (isset($_POST['q2'])) { ?>
<?php $q2_result = $_POST['q2'] == 'b' ? 1 : 0; ?>
<p>Результат: <?php echo $_POST['result'] + $q2_result; ?></p>
<?php } else { ?>
<form action="" method="POST">
<div>
<p>6+4=?</p>
<label><input name="q1" type="radio" value="a">10</label>
<label><input name="q1" type="radio" value="b">1</label>
<label><input name="q1" type="radio" value="c">100</label>
<input type="hidden" name="result" value="0"/>
<input type="submit" value="Ответить"/>
</div>
</form>
<?php } ?>
</body>
</html>
В данной ситуации PHP не лучший вариант решения. Вам поможет Javascript или JQuery. Я не эксперт но это рабочий вариант!
Вот код решения вашего вопроса:
<!DOCTYPE HTML>
<html>
<head>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
</head>
<body>
<form action="result.php" method="POST">
<div class="q1">
<p>6+4=?</p>
<label><input name="q1" type="radio" value="a">10</label>
<label><input name="q1" type="radio" value="b">1</label>
<label><input name="q1" type="radio" value="c">100</label>
<button>Ответить</button>
</div>
<div class="q2" style="display: none">
<p> 50 - 2?</p>
<label><input name="q2" type="radio" value="a">44</label>
<label><input name="q2" type="radio" value="b">48</label>
<label><input name="q2" type="radio" value="c">52</label>
<button type="submit">Результат</button>
</div>
</form>
<script>
$("button",".q1").on("click", function(event){
event.preventDefault();
$(".q2").attr("style", "");
$($(this).parent()).attr("style", "display:none");
});
</script>