随机化语句顺序

时间:2012-01-06 22:04:19

标签: php mysql while-loop

我一直在乱搜索引擎,我试图让while语句运行并以随机顺序回显结果。这是我现在的代码。

if ($numrows > 0) {

while ($row = mysql_fetch_assoc($query)) {

    $id = $row['id'];
    $title = $row['title'];
    $description = $row['description'];
    $keywords = $row['keywords'];
    $link = $row['link'];

    echo "<div id='resultbox'><h3><a href='$link'>$title</a></h3><br><p>$description</p></div>";



}

理论上我需要while语句来完全随机地运行和显示结果。

无论如何这可以做到吗?

谢谢!

4 个答案:

答案 0 :(得分:5)

您可以在查询中order by rand()随机订购结果。

答案 1 :(得分:0)

我认为你不能在同样的声明中做到这一点。我认为您必须将查询结果放入列表中,然后使用其大小,您可以使用随机数生成器并使用其索引从中检索元素。

您也可以随机播放列表,然后按顺序从中检索。

答案 2 :(得分:0)

  1. 使用Foreach代替一段时间
  2. 事先计算结果。
  3. 生成一个数组,其中包含最多为结果的数量。
  4. 使用本机php函数随机化该数组。
  5. 在做foreach时($ k =&gt; $ v种类)使用你加扰的数组中的下一个数字,然后取消设置。

答案 3 :(得分:0)

除了使用SELECT * FROM search WHERE row1='1' ORDER BY rand()

你可以:

while ($row = mysql_fetch_assoc($query)) {
    $data[] = $row;
}
shuffle($data);

foreach($row as $k=>$v) {
    $id = $row['id'];
    $title = $row['title'];
    $description = $row['description'];
    $keywords = $row['keywords'];
    $link = $row['link'];

    echo "<div id='resultbox'><h3><a href='$link'>$title</a></h3><br><p>$description</p</div>";
}