我有5個問題在我的數據庫中。我希望它們能夠隨機顯示而不會重複。我嘗試使用「由rand()命令」,但重複發生。我如何避免重複?以下是我迄今爲止所做的代碼!從數據庫中隨機顯示行,無重複?
<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'mySql';
$dbname = "papers";
$rec_limit = 1;
$conn = new mysqli($dbhost, $dbuser, $dbpass , $dbname);
if(! $conn)
{
die('Could not connect: ' . mysql_error());
}
mysqli_select_db($conn,"$dbname")or die("cannot select DB");
/* Get total number of records */
$sql = "SELECT * FROM quest ";
$retval = mysqli_query( $conn,$sql);
if(! $retval)
{
die('Could not get data: ' . mysql_error());
}
$row = mysqli_fetch_array($retval, MYSQL_NUM);
$rec_count = $row[0];
if(isset($_GET{'page'}))
{
$page = $_GET{'page'} + 1;
$offset = $rec_limit * $page ;
}
else
{
$page = 0;
$offset = 0;
}
$left_rec = $rec_count - ($page * $rec_limit);
$sql1 = "SELECT distinct * "." FROM quest "."order by rand()"."LIMIT $offset, $rec_limit";
$retval = mysqli_query( $conn ,$sql1);
if(! $retval)
{
die('Could not get data: ' . mysql_error());
}
while($row = mysqli_fetch_array($retval, MYSQL_ASSOC))
{
echo '<div class="question-content">'.$row["id"].".".$row["question"]."<br><br>".'</div>';
echo '<div class="question-options">';
echo '<input type="radio" name="qn" value="option1" >'.$row["opt1"]."<br>".'</div>';
echo '<input type="radio" name="qn" value="option2" >'.$row["opt2"]."<br>".'</div>';
echo '<input type="radio" name="qn" value="option3" >'.$row["opt3"]."<br>".'</div>';
echo '<input type="radio" name="qn" value="option4" >'.$row["opt4"]."<br><br>".'</div>';
echo '</div>';
"--------------------------------<br>";
}
if($page > 0 && $page < 5)
{
$last = $page - 2;
echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$page.'">'.'next'.'</a>';
}
else if($page == 0)
{
echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$page.'">'.'next'.'</a>';
}
else if($left_rec < $rec_limit)
{
$last = $page - 2;
echo "<a href=\"$_PHP_SELF?page=$last\">Last Record</a>";
}
mysqli_close($conn);
?>
存儲哪個問題是最後一個,如果隨機問題等於最後一個問題,則重新選擇。 – Script47
@ Script47最好跟蹤所有問題,而不只是最後一個問題,但這聽起來像是一個算法問題,而不是其他任何問題 –
您需要跟蹤所顯示的問題並從查詢中消除它們。在查詢中,您可以使用'ORDER BY RAND'來獲取查詢以返回隨機數,但它不會移除您已經顯示的問題。 –