实际上,我想在网页中显示数据库(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 ' ';
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()循环返回的每一行,它都不会被视为单独的问题。
什么是最好的方法?
预先感谢...
答案 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>