2012-01-06 53 views
-1

我一直在寻找一个搜索引擎,我试图让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语句来完全随机地运行和显示结果。

有没有反正这可以做?

谢谢!

+0

你为什么不只是那种你的mysql结果通过随机配备的顺序按随机属性? – Rooster 2012-01-06 22:07:36

+0

它按照数据库所在的关键字抓取结果,每次脚本运行时我都无法重新洗牌数据库。 – HarryBeasant 2012-01-06 22:08:43

+0

afuzzyllama,不错的一个删除您的评论。 – HarryBeasant 2012-01-06 22:11:14

回答

5

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

+0

这是我的查询$ query =“SELECT * FROM search WHERE”;我将如何构造这个? – HarryBeasant 2012-01-06 22:10:23

+0

'$ query =“select * from search where something = something order by rand()”;' – Eric 2012-01-06 22:13:05

+0

明白了,谢谢! – HarryBeasant 2012-01-06 22:20:19

0

我不认为你可以做同样的声明。我认为你必须把查询的结果放到一个列表中,然后通过使用它的大小,你可以使用一个随机数生成器,并使用它们的索引从它中检索元素。

您也可以将清单洗牌,然后按顺序从中检索。

0
  1. 使用foreach而不是同时
  2. 前手算结果。
  3. 使用整数生成一个数组,直到您的结果数。
  4. 随机数组与本机php功能。
  5. 当你做foreach时($ k => $ v kind)使用数组中的下一个数字,然后取消设置。
+0

但我同意埃里克。但如果你必须做到这一点没有MySQL访问继承人的方法。 – Rooster 2012-01-06 22:11:43

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>"; 
}