У меня есть 5 вопросов в моей базе данных. Я хотел, чтобы их отображали случайным образом и без повторений. Я попытался использовать «order by 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', чтобы запрос возвращал случайное число, но он не удалит вопросы, которые вы уже указали. –