我正在制作一个基本的测验程序,完成后将允许用户完成从MySQL数据库中读取的测验,并编写测验以存储在数据库中。
我有一个问题编号($qn
)的变量,当递增时会更改问题,并且会有四个可能的选择到数据库中的下一个问题。
我的问题是:我如何在我的主表单上有一个按钮(一旦用户选择了一个单选按钮)记录单选按钮结果,然后递增$qn
以显示下一个问题,然后呢该过程再次进行,直到$qn == $numberOfQuestions
,此时它需要显示页面results.php并将quiz.php页面上所有单选按钮的结果相加。
我是PHP的新手,很抱歉,如果这是一个特别愚蠢的问题,或者我是以不明确的方式措辞。而且我非常乐观地建议有更简单或更有效的方法。
提前感谢您的任何答案,非常感谢:)
答案 0 :(得分:1)
听起来我应该使用带有AJAX请求的JavaScript。要检测何时选择单选按钮,只能使用JavaScript。您可以使用库来使您的生活更轻松,就像jQuery一样。查看onChange事件等函数。还有Ajax
答案 1 :(得分:1)
您只需处理表单输入,存储值并继续下一个问题。
一个基本的例子(Demo):
<h1>Quiz</h1>
<?php
$quiz = load_quiz();
$states = isset($_GET['state']) ? explode(',', $_GET['state']) : array();
$states = array_map('intval', $states);
$page = count($states)+1;
if (isset($_POST['answer']))
{
$states[$page-1] = (int) $_POST['answer'];
}
if ($page > count($quiz))
{
?>
<h2>Your selection:</h2>
<?php
foreach($quiz as $key => $question)
{
$state = $states[$key];
$answer = $question['answers'][$state];
printf('%s: %s<br />', $question['question'], $answer);
}
}
else
{
?>
<h2><?php echo $quiz[$page]['question']; ?></h2>
<form method="post" action="?state=<?php echo implode(',', $states); ?>">
<?php
foreach($quiz[$page]['answers'] as $key => $answer)
{
printf(
'<input type="radio" name="answer" id="answer-%d" value="%d"><label for="answer-%d">%s<label><br>',
$key, $key, $key, $answer
);
}
?>
<input type="submit" value="Next">
</form>