2012-01-06 51 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>"; 
}