我正在创建在线考试。我的布局是一次显示一个问题,下面是多项选择。在多项选择的底部是一个' Next'按钮,单击时将显示下一个问题。
问题和多项选择存储在数据库中。
问题是,下一个按钮功能正常,但它会将我重定向到另一个页面。当我想要的只是隐藏上一个问题并在点击下一个问题时显示下一个问题。
这是我的代码: 的分贝
CREATE TABLE `english` (
`E_QueID` int(11) NOT NULL,
`Question` text NOT NULL,
`A` text NOT NULL,
`B` text NOT NULL,
`C` text NOT NULL,
`D` text NOT NULL,
`E` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
HTML
<div class="col-sm-8 bt-query">
<br>
<h4><left>Question 1</left> <right><div class="timer" data-seconds-left="20"></div></right></h4>
<br>
<?php
$query="SELECT * FROM english ORDER BY RAND() LIMIT 1";
$result = mysqli_query($conn, $query);
if (!$result) { // add this check.
die('Invalid query: ' . mysqli_error());
}
while ($row = mysqli_fetch_array($result)) {
echo $row['Question']. "<br />";
echo $row['A']. "<br />";
echo $row['B']. "<br />";
echo $row['C']. "<br />";
echo $row['D']. "<br />";
echo $row['E']. "<br />";
}
?>
<br>
<form action="englishq.php" method="get">
<input type="submit" name="next" value="Next">
</form>
</div>
englishq.php
<?php
$hostname = "localhost";
$user = 'root';
$password = '';
$db = 'questions';
//databse connection
$conn = mysqli_connect("$hostname", "$user", "$password", "$db")or die(mysqli_error());
if(isset($_GET['next'])){
$query="SELECT * FROM english ORDER BY RAND() LIMIT 1";
$result = mysqli_query($conn, $query);
if (!$result) { // add this check.
die('Invalid query: ' . mysqli_error());
}
while ($row = mysqli_fetch_array($result)) {
echo $row['Question']. "<br />";
echo $row['A']. "<br />";
echo $row['B']. "<br />";
echo $row['C']. "<br />";
echo $row['D']. "<br />";
echo $row['E']. "<br />";
}
}
?>
答案 0 :(得分:0)
将表单的操作参数留空,以便表单将提交回当前页面。然后使用PHP读取提交的最后一个问题并加载下一个问题以将其显示给用户。您可以使用隐藏的输入字段来跟踪提交的问题。
表格代码:
<form action="" method="post">
<input type="hidden" name="question_number" value="<?php echo $mynumber; ?>" />
<input type="radio" name="answer" value="A." /><?php echo $answerA; ?> <br/>
<input type="radio" name="answer" value="B." /><?php echo $answerB; ?> <br/>
<input type="radio" name="answer" value="C." /><?php echo $answerC; ?> <br/>
<input type="radio" name="answer" value="D." /><?php echo $answerD; ?> <br/>
<input type="submit" name="next" value="Next">
</form>
PHP代码:
if (isset($_POST['question_number']))
{
// Record the last answer
$stmt = $db->prepare("INSERT INTO user_answer_table (answer_field) VALUES (':answer')");
$stmt->bindParams(':answer', $_POST['answer']);
$stmt->execute();
// Load the next question
$stmt = $db->prepare("SELECT * FROM question_table WHERE question_id = :questionid");
$stmt_>bindParams(':questionid',$_POST['question_number']+1);
$stmt->execute();
}
答案 1 :(得分:0)
检查$_POST
是否包含答案。如果是,请检查它是否正确。给出反馈。如果答案不正确,您可能会再次提出相同的问题,否则会生成一个新的随机ID。
在页面内容周围放置一个表单,将数据发送回同一个脚本。
<form action="" type="post">
向客户提供问题ID。
<input type="hidden" name="qid" value="<?php echo $row['E_QueID';?>">
在数据表的循环内部生成一些单选按钮
<div>
<input type="radio" id="ansA" name="answer" value="A">
<label for="ansA"><?php echo $row['A'];?></label>
</div>
<div>
<input type="radio" id="ansB" name="answer" value="B">
<label for="ansB"><?php echo $row['B'];?></label>
</div>
添加提交按钮并关闭表单标记。