PHP和HTML:如何一次显示一个结果?

时间:2015-11-21 21:32:26

标签: php html sql

我是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>

2 个答案:

答案 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