如何使用php mysql在网页上显示随机问题及其选项?

时间:2018-08-26 06:17:11

标签: php mysql

实际上,我想在网页中显示数据库(mysql)中的一些随机问题,用户可以使用单选按钮回答该问题

这是我的代码,用于使用php在网页中显示数据

public function loadQuestions() {
   try {
       $stmt = $this->conn->prepare('SELECT * FROM questions');
       $stmt->execute();

       return $stmt;
   }
   catch(PDOException $e)
    {
        echo $e->getMessage();
    }
}

然后我从显示页面(quiz.php)调用了该函数

  $stmt = $auth_user->loadQuestions(); 

    <form action="#">
          <!-- this backend logic -->
            <?php 
                 foreach($stmt as $row) {

            ?>
            <!-- backeng logic close -->     
               <div class="card-panel light-blue darken-1"><?php echo $row['Question_id'];
                                                                 echo '&nbsp'; 
                                                                 echo $row['question']; 
                                                                 echo '?'
                                                                 ?></div>

                        <p>
                          <label>
                            <input name="group3" type="radio" value="<?php $row['option1'] ?>" />
                            <span><?php echo $row['option1'] ?></span>
                          </label>
                        </p>
                        <p>
                          <label>
                            <input name="group3" type="radio" value="<?php $row['option2'] ?>" />
                            <span><?php echo $row['option2'] ?></span>
                          </label>
                        </p>
                        <p>
                          <label>
                            <input name="group3" type="radio"  value="<?php $row['option3'] ?>" />
                            <span><?php echo $row['option3'] ?></span>
                          </label>
                        </p>
                        <p>
                          <label>
                            <input name="group3" type="radio" value="<?php $row['option4'] ?>" />
                            <span><?php echo $row['option4'] ?></span>
                          </label>
                        </p>

                        <?php

                }

                        ?>
                          <!-- submit button -->
                                <div class="card">
                                <div class="card-content">
                                        <p>
                                          <label>
                                            <input type="checkbox" onchange="document.getElementById('submitValue').disabled = !this.checked;"/>
                                            <span>I agree that, And I'm sure to submit my answers.</span>
                                          </label>
                                        </p>
                                        <div class="col s6 offset-s10">
                                        <button class="btn waves-effect waves-light" id="submitValue" disabled type="submit">Submit
                                            <i class="material-icons right">send</i>
                                          </button>
                                        </div>
                                </div>
                                </div>
                          <!-- submit button end      -->
                    </form> 

但是,问题是,当我选择单选按钮时,对于由foreach()循环返回的每一行,它都不会被视为单独的问题。

什么是最好的方法?

预先感谢...

3 个答案:

答案 0 :(得分:0)

将您从数据库中提取问题的查询更改为:

SELECT * FROM questions ORDER BY RAND();

编辑:根据OP的注释,将查询结果限制为15:

SELECT * FROM questions ORDER BY RAND() LIMIT 15;

答案 1 :(得分:0)

您可以将Rand()用于随机,而将limt用于限制行结果

答案 2 :(得分:0)

RAND()函数返回一个随机数或一个范围内的随机数。

RAND()函数将返回介于0(含)和1(不含)之间的值。

如果未提供种子, RAND()函数将返回完全随机数,如果使用种子值,则将返回可重复的随机数序列。

public function loadQuestions() {
   try {
       $stmt = $this->conn->prepare('SELECT * FROM questions ORDER BY RAND() LIMIT 15');
       $stmt->execute();

       return $stmt;
   }
   catch(PDOException $e)
    {
        echo $e->getMessage();
    }
}

返回一个随机的十进制数字(没有种子值-因此它返回一个完全随机的数字,> = 0和<1):

  

SELECT RAND();

返回随机的十进制数> = 5和<10:

  

SELECT RAND()*(10-5)+5;

您还可以在查询中使用 php mt_rand()函数:-

mt_rand()函数使用Mersenne Twister算法生成一个随机整数。

提示:此函数产生更好的随机值,并且比rand()快4倍。

提示:如果您想要10到100(含)之间的随机整数,请使用mt_rand(10,100)。

<form action="#">
      <!-- this backend logic -->
        <?php 
             foreach($stmt as $row) {

        echo '
        <!-- backeng logic close -->     
           <div class="card-panel light-blue darken-1"> '.$row['Question_id'].'

                                                              '.$row['question'].'
                                                              ?
                                                             </div>

                    <p>
                      <label>
                        <input name="group3" type="radio" value=" '.$row['option1'].' " />
                        <span> '.$row['option1'].' </span>
                      </label>
                    </p>
                    <p>
                      <label>
                        <input name="group3" type="radio" value=" '.$row['option2'].'" />
                        <span>'.$row['option2'].' </span>
                      </label>
                    </p>
                    <p>
                      <label>
                        <input name="group3" type="radio"  value="'.$row['option3'].'" />
                        <span>'.$row['option3'].' </span>
                      </label>
                    </p>
                    <p>
                      <label>
                        <input name="group3" type="radio" value=" '.$row['option4'].' " />
                        <span>'.$row['option4'].' </span>
                      </label>
                    </p>';
                   }

                    ?>
              <!-- submit button -->
                    <div class="card">
                    <div class="card-content">
                            <p>
                              <label>
                                <input type="checkbox" onchange="document.getElementById('submitValue').disabled = !this.checked;"/>
                                <span>I agree that, And I'm sure to submit my answers.</span>
                              </label>
                            </p>
                            <div class="col s6 offset-s10">
                            <button class="btn waves-effect waves-light" id="submitValue" disabled type="submit">Submit
                                <i class="material-icons right">send</i>
                              </button>
                            </div>
                    </div>
                    </div>
              <!-- submit button end      -->
        </form>