首页 > 解决方案 > PHP、mySQL、随机问题测验

问题描述

我正在尝试构建应该按照以下顺序工作的测验:

  1. 带有“开始”按钮的欢迎屏幕
  2. 单击开始后,从数据库 (mySQL) 中绘制一个问题并显示在屏幕上(用户只能看到一个问题),
  3. 用户必须选择选项 A 或 B
  4. 单击A或B后(答案应写入数组),然后从数据库中抽取下一个问题(问题编号不能重复)
  5. 用户必须选择选项 A 或 B

等等……等等……直到用户回答 10 个随机问题

在 10 个答案之后,我希望从数据库祝贺中选择 SELECT,以引用所有答案(WHERE IN)

index.php(主文件):

<!doctype html>
<head></head>
<div> 
  Some informations - only text 
</div>
<div class ="quiz" id="quiz">

    <?php
        include 'quiz.php';
    ?>

</div>

测验.php:

<?php
    include 'draw-questions.php';
    header('Content-Type: application/json');

    $aResult = array();

    if (isset($_POST['start-quiz'])) { $option = "start"; }

    if( isset($_POST['next-question_a']) ) { $option = "next"; }
    if( isset($_POST['next-question_b']) ) { $option = "next"; }

    switch ($option){

        case 'start':
                $index = 0;
                $draw_q_ID = DrawQuestion();
                $q_ID = $draw_q_ID[$index];
                $drawn_question = PickQuestion($q_ID);
                $question = explode(",", $drawn_question);
                RunQuiz();
                break;
        case 'next':
                $index++;
                $q_ID = $draw_q_ID[$index];
                $drawn_question = PickQuestion($q_ID);
                $question = explode(",", $drawn_question);
                RunQuiz();
                break;
        default:
                echo"
                    <div class='quiz-intro'>
                        welcome text
                    </div>
                    <form method='POST' action='' >
                    <input type='submit' id='start-quiz' name='start-quiz' value='START'>
                    </form>        
                ";
                break;

    }

  function RunQuiz(){

        ?>
        <script>
            const myNode2 = document.getElementById("quiz");
            while (myNode2.firstChild) {
                myNode2.removeChild(myNode2.lastChild);
            }
        </script>

        <?php

        global $question;
        
             echo "
                <div class='container' id='quiz-form'>
                    <div class='row'>
                         <div class='col-md-5' id='opcja_A' value='$question[0]'>
                             <input type='submit' id='next-question_a' name='next-question' value='$question[0]' style='color: rgba(0, 0, 0,0)'> 
                             <img src='../img_d/$question[1]' style='width:80%; padding: 20px 0'>
                             <h2>$question[0]</h2>
                         </div>
                         <div class='col-md-2'>
                            <img src='../img_d/vs.png' style='width:40%; padding-top:10rem'>
                         </div>
                         <div class='col-md-5' id='opcja_B' value='$question[2]''>
                             <input type='submit' id='next-question_b' name='next-question' value='$question[2]' style='color: rgba(0, 0, 0,0)'> 
                             <img src='../img_d/$question[3]' style='width:80%; padding: 20px 0'>
                             <h2>$question[2]</h2>
                         </div>
                    </div>
                </div>  
             ";

绘制questions.php:

<?php

    function DrawQuestion(){
        $q_ID = array();

        while(sizeof($q_ID)<=30) {
            $number = str_pad(rand(1, 57), 2, "0", STR_PAD_LEFT);
            if (!in_array($number, $q_ID)) {
                array_push($q_ID, $number);
            }
        }

        return $q_ID;
    }



    function PickQuestion($q_ID){

        require '../config/db_connection.php';

        $quiz = "SELECT * FROM `quiz` WHERE `d_id` = '$q_ID'";

        $db = getConnection();
        $stmt = $db->prepare($quiz);
        $stmt->execute();

        while ($row_quiz = $stmt->fetch()) {

            $question_a = $row_quiz['d_a'];
            $question_a_image = $row_quiz['d_a_image'];
            $question_b = $row_quiz['d_b'];
            $question_b_image = $row_quiz['d_b_image'];
        }

        $result = $question_a.','.$question_a_image.','.$question_b.','.$question_b_image;
        return $result;
    }

我考虑了很久,并尝试解决我的问题。一直以来,我在编写数组答案和绘制另一个问题时遇到问题。使用我总是会丢失答案和我已经得到答案的问题数量。当然,我可以一次画出 10 个问题,但问题是一次显示一个,然后在某个地方收集答案。

任何建议,提示我应该如何解决这个问题?单击答案后如何存储答案并转到下一个问题而不会丢失问题ID和答案?
我也尝试过 JS 和 jQuery如何通过 JavaScript 调用 PHP 函数?但没有结果

标签: javascriptphpjquerymysql

解决方案


推荐阅读