mysql在网页上显示随机问题及其选项?

dxxyhpgq  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(280)

实际上,我想在网页中显示一些来自数据库(mysql)的随机问题,用户可以使用单选按钮来回答这个问题
下面是我使用php在网页中显示数据的代码

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

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

我从我的显示页面(quick.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()循环返回的每一行作为单独的问题考虑。。
最好的办法是什么?
提前谢谢。。。

wooyq4lh

wooyq4lh1#

可以将rand()用于random,将limt用于limit行结果

SELECT * 
FROM questions 
ORDER BY RAND()
LIMIT 15
0yg35tkg

0yg35tkg2#

函数的作用是:返回一个或多个随机数。
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):
选择rand();
返回大于等于5且小于10的随机十进制数:
选择rand()*(10-5)+5;
也可以将php mt_rand()函数用于query:-
函数的作用是:使用mersenne twister算法生成一个随机整数。
提示:此函数生成更好的随机值,比rand()快4倍。
提示:如果你想要一个10到100(包括10和100)之间的随机整数,使用mt_rand(10100)。

<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>
wydwbb8l

wydwbb8l3#

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

SELECT * FROM questions ORDER BY RAND();

编辑:根据op的评论,将查询结果限制为15个:

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

相关问题