我的数据库中有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);
?>
答案 0 :(得分:2)
PHP提供了一个名为shuffle
的函数,它将随机化一个数组。它也分配新密钥。以下是其工作原理的示例:
$array = array(1,2,3,4,5);
shuffle($array);
当你回复$array
的元素时,你将以随机(改组)的顺序获得它们。这是一个PHP独占解决方案,填充$array
的方式取决于您的SQL,因此不在此问题的范围内。