Php在单选按钮[测验]上显示随机记录

Php在单选按钮[测验]上显示随机记录,php,mysql,random,Php,Mysql,Random,我正在做一个简单的php问答游戏。我的问题和答案存储在数据库中。我的TBLQUICE的表格结构如下所示: _id, question, answer1, answer2, answer3, correctanswer. 我必须在页面上随机显示它们 这就是我迄今为止所尝试的: <!DOCTYPE html> <html> <head> <title>Sample Quiz</title> <?php include 'db.ph

我正在做一个简单的php问答游戏。我的问题和答案存储在数据库中。我的TBLQUICE的表格结构如下所示:

_id, question, answer1, answer2, answer3, correctanswer.
我必须在页面上随机显示它们

这就是我迄今为止所尝试的:

<!DOCTYPE html>
<html>
<head>
<title>Sample Quiz</title>
<?php 
include 'db.php';
$stmt = $conn->prepare( "SELECT *
      FROM tblquiz ORDER BY rand()" );
      $stmt->execute();
?>
</head>
<body>
<?php 
    $number = 0;
    for($i=0; $row = $stmt->fetch(); $i++){
            $number++;  
            $id = $row['_id'];
            $question = $row['question'];
            $answer1 = $row['answer1'];
            $answer2 = $row['answer2'];
            $answer3 = $row['answer3'];
            $correctanswer = $row['correctanswer'];       
?>

     <h4> <?php echo $number . ".) " . $question; ?></h4>   
     <label><input type="radio" value="<?php echo $answer1; ?>" name="<?php echo $question; ?>"> <?php echo $answer1; ?></label>
     <label><input type="radio" value="<?php echo $answer2; ?>" name="<?php echo $question; ?>"> <?php echo $answer2; ?></label>
     <label><input type="radio" value="<?php echo $answer3; ?>" name="<?php echo $question; ?>"> <?php echo $answer3; ?></label>
     <label><input type="radio" value="<?php echo $correctanswer; ?>" name="<?php echo $question; ?>"> <?php echo $correctanswer; ?></label>

<?php
    }
?>
<br />
<br />
<input type="submit" value="Submit" name="submit">

</body>
</html>

抽样测验

将所有答案存储在单个数组中,然后随机迭代数组并打印答案标签,因为您无法优化查询以随机选择列。

将所有答案存储在单个数组中,然后随机迭代数组并打印答案标签,因为您无法优化查询以选择列随机列。

尝试以下方法:

<body>
<?php 
$number = 0;
for($i=0; $row = $stmt->fetch(); $i++){
        $number++;  
        $id = $row['_id'];
        $question = $row['question'];
      $ans_array = array($row['answer1'],$row['answer2'],$row['answer3'],$row['correctanswer']);
     shuffle($ans_array);
?>

 <h4> <?php echo $number . ".) " . $question; ?></h4>   
 <label><input type="radio" value="<?php echo $ans_array[0]; ?>" name="<?php echo $question; ?>"> <?php echo $ans_array[0]; ?></label>
 <label><input type="radio" value="<?php echo $ans_array[1]; ?>" name="<?php echo $question; ?>"> <?php echo $ans_array[1]; ?></label>
 <label><input type="radio" value="<?php echo $ans_array[2]; ?>" name="<?php echo $question; ?>"> <?php echo $ans_array[2]; ?></label>
 <label><input type="radio" value="<?php echo $ans_array[3]; ?>" name="<?php echo $question; ?>"> <?php echo $ans_array[3]; ?></label>

<?php
}
?>
<br />
<br />
<input type="submit" value="Submit" name="submit">

</body>

试试这个:

<body>
<?php 
$number = 0;
for($i=0; $row = $stmt->fetch(); $i++){
        $number++;  
        $id = $row['_id'];
        $question = $row['question'];
      $ans_array = array($row['answer1'],$row['answer2'],$row['answer3'],$row['correctanswer']);
     shuffle($ans_array);
?>

 <h4> <?php echo $number . ".) " . $question; ?></h4>   
 <label><input type="radio" value="<?php echo $ans_array[0]; ?>" name="<?php echo $question; ?>"> <?php echo $ans_array[0]; ?></label>
 <label><input type="radio" value="<?php echo $ans_array[1]; ?>" name="<?php echo $question; ?>"> <?php echo $ans_array[1]; ?></label>
 <label><input type="radio" value="<?php echo $ans_array[2]; ?>" name="<?php echo $question; ?>"> <?php echo $ans_array[2]; ?></label>
 <label><input type="radio" value="<?php echo $ans_array[3]; ?>" name="<?php echo $question; ?>"> <?php echo $ans_array[3]; ?></label>

<?php
}
?>
<br />
<br />
<input type="submit" value="Submit" name="submit">

</body>

用这个

<?php
function shuffle_assoc($list) { 
  if (!is_array($list)) return $list; 

  $keys = array_keys($list); 
  shuffle($keys); 
  $random = array(); 
  foreach ($keys as $key) { 
    $random[$key] = $list[$key]; 
  }
  return $random; 
} 
$firstquarter = array('January', 'February', 'March');
$suff = shuffle_assoc($firstquarter);

foreach($suff as $suffle)
{   
?>
     <label><input type="radio" value="<?php echo $suffle; ?>" name="<?php echo $question; ?>"> <?php echo $suffle; ?></label>

<?php
}
?>

用这个

<?php
function shuffle_assoc($list) { 
  if (!is_array($list)) return $list; 

  $keys = array_keys($list); 
  shuffle($keys); 
  $random = array(); 
  foreach ($keys as $key) { 
    $random[$key] = $list[$key]; 
  }
  return $random; 
} 
$firstquarter = array('January', 'February', 'March');
$suff = shuffle_assoc($firstquarter);

foreach($suff as $suffle)
{   
?>
     <label><input type="radio" value="<?php echo $suffle; ?>" name="<?php echo $question; ?>"> <?php echo $suffle; ?></label>

<?php
}
?>


因为你以固定的顺序输出
$answer1
$answer2
$answer3
。@路人我该如何将它们按随机顺序排列?@Dunkey你必须想出一些机制来做到这一点,你有没有想过怎么做?@Dunkey一种方法是把答案(索引或实际内容)放进去在一个数组中,输入,然后相应地输出。因为您以固定顺序输出
$answer1
$answer2
$answer3
。@路人我如何将它们以随机顺序排列?@Dunkey您必须想出一些机制才能做到这一点,你有没有想过如何做到这一点?@Dunkey一种方法是将答案(索引或实际内容)放入一个数组中,将其保存,然后相应地输出。谢谢!这解决了我的问题。正如其他人所说,我必须将它们放入数组中并将其随机排列。欢迎:)是的,您需要将答案单独随机排列,因为您希望随机排列。谢谢!这解决了我的问题。正如其他人所说,我必须将它们放入数组中,并将其随机排列。欢迎:)是的,您需要将答案单独随机排列,因为您希望随机排列。