2011-06-23 58 views
1

的隨機循環我有一個包含字段的SQL數據庫。我可以得到所有在該領域的元素:SQL結果通過

 $result=mysql_query($sql); 
     while($row=mysql_fetch_array($result)){ 
     $ftype =$row['ftype']; //name of field is 'ftype' 
     print $ftype} //do something 

我希望每個頁面打開/刷新時間打印出一個隨機元素。

知道結果是包含我想要的信息的數組,我想隨機選擇數組的一個元素。另外,如果數組中有N個元素,我想在第二次再次顯示任何元素之前選擇所有N個元素。這個過程重演。我知道如何在java或python中編寫這樣的代碼,但我不認爲這是我應該去的方式。

我想我需要使用JavaScript,但我只是不確定使用什麼技術。

UPDATE:

帕特里克的想法似乎正是我一直在尋找。我想我會分享我現在擁有的,也許你可以建議優化。我希望代碼中的意圖是顯而易見的。

<? 
session_start(); 
if (!isset($_SESSION['count']) || !isset($_SESSION['randomArray'])) { 
     $count = 0; 
     $randomArray = array(); 
     $sql="SELECT youtubeurl FROM Foodlist"; 
     $result=mysql_query($sql); 
     while($row=mysql_fetch_array($result)){ 
      array_push($randomArray,$row['youtubeurl']); 
     } 
     shuffle($randomArray); 
     $_SESSION['randomArray'] = $randomArray; 
     $_SESSION['count'] = $count; 
} elseif ($_SESSION['count'] >= sizeof($_SESSION['randomArray'])){ 
    $_SESSION['count'] = 0; 
    $randomArray = $_SESSION['randomArray']; 
    shuffle($randomArray); 
    $_SESSION['randomArray'] = $randomArray; 
} else{ 
    $randomArray = $_SESSION['randomArray']; 
    $count = $_SESSION['count']; 
    echo $randomArray[$count]; 
    $_SESSION['count']++; 
} 
?> 
+0

我不認爲這會涉及Javascript! –

回答

1

您可以在不使用Javascript的情況下執行此操作,但是您需要打開/維護一個會話。

僞代碼:

data = data_from_mysql() 

choice = random.choice(data, exclude = SESSION['choices']) 
SESSION['choices'].append(choice) 

print choice 

if len(SESSION['choices']) == len(data): 
    SESSION['choices'] = [] 
+0

我不知道會話的任何事情。你能指點我一些好的信息,以便我知道我正在尋找正確的東西嗎? – scifirocket

+0

絕對。 [檢查出來](http://www.php.net/manual/en/session.examples.basic.php),它是Sessions的PHP手冊。他們非常簡單。 –

+0

你認爲有更多的服務器端的方法嗎?除非必須,否則我不想創建Cookie。 – scifirocket

0

如果你想有一個隨機結果讓DBMS照顧它。將此添加到您的sql查詢的底部。

ORDER BY RAND() 
LIMIT 1 
+0

這將工作,但我有一個結果可以隨機出現的次數的限制。在它再次出現之前,所有東西都必須至少出現一次。我敢打賭,你猜不出什麼類型的內容會需要這種結構! (提示:這是廣告) – scifirocket