我是PHP和HTML的新手。我正在解决这个问题。如何在用户选择答案并转到下一个问题之前一次显示一个问题?我的代码现在在同一页面上显示所有问题。我只想让页面显示一个问题,用户选择答案并单击提交按钮转到下一个问题。非常感谢你!
<?php
require_once 'database.php';
// Start the session
session_start();
$query = "SELECT * FROM question_table";
$statement = $db->prepare($query);
$statement->execute();
$question = $statement->fetchall();
//print_r($question); //test the query to see if any result comes back
$statement->closeCursor();
// Getting response from the student
//if (isset($_POST["submit"])){
//
//echo "worked";
//echo $_POST["option"];
//}
?>
<!DOCTYPE html>
<html>
<head>
<title>SimulationQuestion</title>
</head>
<body>
<h1>Welcome</h1>
<form action="QuestionAndOption.php" method="POST">
<!-- index is used to display question number-->
<?php $index =1; ?>
<!-- Pulling data from the returned array from the query-->
<?php foreach($question as $value){ ?>
Question <?php echo $index.": ".$value["Question"];?><br>
A: <input type="radio" name="option" value="OptionA"> <?php echo $value["OptionA"]; ?><br>
B: <input type="radio" name="option" value="OptionB"> <?php echo $value["OptionB"]; ?><br>
C: <input type="radio" name="option" value="OptionC"> <?php echo $value["OptionC"]; ?><br>
D: <input type="radio" name="option" value="OptionD"> <?php echo $value["OptionD"]; ?><br>
<!--Submit button-->
<button name="submit" type="submit">Submit</button><br>
<!--index is increment by 1 after each loop-->
<?php $index++; ?>
<?php } ?>
</form>
</body>
</html>
答案 0 :(得分:0)
存储问题和计数器以存储$_SESSION['questions']
中询问的问题。使用计数器(也存储在$_SESSION
中)来确定下一个问题是什么,并在每次提交后递增。
如果设置了session_start();
,请在$_SESSION['questions']
之后执行此操作。如果没有得到您的问题并将其存储到$_SESSION['questions]
并将计数器设置为0。
而不是foreach()
您可以通过$_SESSION['questions'][$_SESSION['counter']]
访问您的问题,但不要忘记每次都增加计数器。
示例代码:
设置的部分设置/获取问题并增加计数器:
session_start();
if(!isset($_SESSION['questions'])) {
$query = "SELECT * FROM question_table";
$statement = $db->prepare($query);
$statement->execute();
$question = $statement->fetchall();
$statement->closeCursor();
$_SESSION['questions'] = $question;
$_SESSION['counter'] = 0;
}
if (isset($_POST["submit"])){
// DO YOUR STUFF
$_SESSION['counter']++;
}
?>
输出问题的部分:
<?php
$question = $_SESSION['questions'][$_SESSION['counter']];
if(empty($question)) {
// FINISHED ALL QUESTIONS
} else {
?>
<form action="QuestionAndOption.php" method="POST">
Question <?php echo $_SESSION['counter'] . ": " . $question["Question"]; ?><br>
A: <input type="radio" name="option" value="OptionA"> <?php echo $question["OptionA"]; ?><br>
B: <input type="radio" name="option" value="OptionB"> <?php echo $question["OptionB"]; ?><br>
C: <input type="radio" name="option" value="OptionC"> <?php echo $question["OptionC"]; ?><br>
D: <input type="radio" name="option" value="OptionD"> <?php echo $question["OptionD"]; ?><br>
<button name="submit" type="submit">Submit</button>
</form>
<?php
} // if close
?>
答案 1 :(得分:0)
您应该有一个页面显示一个问题。您的查询将是:SELECT * FROM question_table WHERE Question = :id
。然后,您将执行$statement = $db->prepare($query, array(":id" => $_GET["id"]))
准备查询以仅获取一个问题,获取问题,然后显示数据库提取的问题。
在用户回答完问题之后,它将被提交,并且在您的提交逻辑中,它应该将用户重定向到下一个问题,只需增加问题ID即可。页面地址应该有一个名为id
的查询参数(例如:mypage.php?id=1
)。
Pastebin:Here