2013-06-11 116 views
0

我試圖從數據庫中填充數據的數組中獲取隨機值。我從數據庫中選擇了一些產品並將它們顯示在首頁上,但每次頁面重新加載時,我都需要顯示不同的(隨機)產品。從數據庫中選擇數組後,從數組中選擇一個隨機值

$row = mysql_query("SELECT * FROM anunt WHERE lichidareStoc = 0 ORDER BY anuntID DESC") or die(mysql_error()); 
$row2 = mysql_fetch_assoc($row); 

因此,我認爲$ row2現在是一個數組,並具有我以前從數據庫中選擇的所有信息。我現在如何從該數組中選擇一個隨機「行」?

感謝

+0

你可以使數據庫做的工作適合你,請參閱http://stackoverflow.com/questions/16928079/return-random-results-order-by-rand/16928464#16928464和http://stackoverflow.com/questions/16928019/random-shuffle-without-getting-相同的結果,再次/ 16928182#16928182。 – mzedeler

回答

0

如果你想選擇一個隨機項,你可以做這樣的事情:

$myRows=array(); 
$row = mysql_query("SELECT * FROM anunt WHERE lichidareStoc = 0 ORDER BY anuntID DESC") or die(mysql_error()); 
while($row2 = mysql_fetch_assoc($row)) 
    $myRows[]=$row2; 

$randomEntry=$myRows[array_rand($myRows)]; 

如果你想該條目隨機場雖然,你應該使用array_rand像伯恩哈德Poiss指出。

$row = mysql_query("SELECT * FROM anunt WHERE lichidareStoc = 0 ORDER BY anuntID DESC") or die(mysql_error()); 
$row2 = mysql_fetch_assoc($row); 
$randomField=$row2[array_rand($row2)]; 
2

您正在尋找array_rand,請參閱:http://php.net/manual/en/function.array-rand.php

例子:

$rand_key = array_rand($row2); 
echo $row2[$rand_key]; // your random 

您也直接從數據庫中選擇一個隨機行:

SELECT * 
FROM anunt 
WHERE lichidareStoc = 0 
ORDER BY rand() 
LIMIT 1 

但請注意,這會減少你的perfo浪漫,尤其是在更大的桌子上。

側面說明:mysql_ *功能已被棄用,使用mysqli_ *代替。

0

首先你要填充您的結果

$row = mysql_query("SELECT * FROM anunt WHERE lichidareStoc = 0 ORDER BY anuntID DESC") or die(mysql_error()); 
$rows = array(); 
while($rec = mysql_fetch_assoc($row)){ 
    $rows[] = $rec; 
} 

數組然後你就可以使用隨機選擇一個項目array_rand

$random = $rows[array_rand($rows)];