繁体   English   中英

通过单击按钮MYSQL / PHP来调用一行

[英]Call a Row By Clicking A Button MYSQL/PHP

我正在创建一个在线考试。 我的布局是一次显示一个问题,下面是多项选择。 在多项选择的底部是一个“下一步”按钮,点击该按钮将显示下一个问题。

问题和多项选择存储在数据库中。

问题是,下一个按钮功能,但它将我重定向到另一个页面。 当我想要的只是隐藏上一个问题并在点击下一个问题时显示下一个问题。

这是我的代码: db

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>&nbsp;<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 />";
        }
    }
?>

将表单的操作参数留空,以便表单将提交回当前页面。 然后使用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();
}

检查$_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>

添加提交按钮并关闭表单标记。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM