2011-07-25 57 views
0

我有一個表格,文字記錄太多。 (例如1000記錄)每天顯示一個文本

我的表結構類似於下面:

ID   |   Text 
--------------------------------------- 
1   |  My Test Text 1 
2   |  My Test Text 2 

我想顯示每天的紀錄,對此有任何想法?

感謝

+0

呃...是啊...有一個日期與每一行,或者你真的只想在24小時內獲取一次記錄? – bdares

+0

@bdares:看到'i_forget'回答,解決了我的問題,謝謝 –

回答

3

爲了通過與蘭德今天的日期ORDER BY RAND(CURDATE())$date = date('Y-m-d') ;,然後的種子使用...ORDER BY RAND($date)

+0

謝謝你,你很棒 –

+0

哇。我不知道你可以在'RAND()'裏放一個日期。現在懶得去嘗試一下,但我會聽你的話 - 那是岩石。 – AlienWebguy

+0

是啊,它的方便隨時隨地做事。 – plague

0

的,你需要在表中添加列在其上的數據已經被插入存儲日期。

,然後你可以寫查詢來獲取數據按日期..

+0

不,因爲我想如果我有20條記錄,從這20條記錄每天顯示一條文字 –

2
SELECT * FROM my_table ORDER BY RAND() LIMIT 1 

這將獲取一個隨機記錄。使用PHP以24小時使用壽命進行緩存。每次加載此頁面時,PHP都應檢查緩存文件和過期時間。如果緩存過期,則進行新查詢,重新緩存。沖洗,重複。

0

您的唯一選擇是隨機排序並將結果限制爲1,因爲您沒有日期列。

SELECT text FROM yourTable ORDER BY RAND() LIMIT 1 

(假設MySQL的)

0

您可以編寫(或發現),將基於日起僞隨機整數(某種類型非常高的碰撞哈希)函數。用它來SELECT Text WHERE ID = ?。這樣你就不必存儲任何額外的數據。當然,你將不得不作出,其中ñ是你最低的ID和是您最高的ñ在區間震盪的整數。

0

,因爲你沒有日期,我的建議是使用文本文件中存儲什麼ID是昨天顯示(一些UNTESTED簡單的代碼,讓你開始):

<?php 
$tempfile = '/path/to/file/yesterday_id.txt'; 

list($yesterday_id, $yesterday_date) = explode("\t", file_get_contents($tempfile)); 
$today = date('Y-m-d'); 
if($yesterday_date <> $today) 
{ 
    $yesterday_id++; 
} 

$sql = "SELECT * FROM sometable WHERE id = '$yesterday_id'"; 
$rs = mysql_query($sql); 
if($r = mysql_fetch_assoc($rs)) 
{ 
    echo $r['text']; 
    file_put_contents($tempfile, "{$yesterday_id}\t{$today}"); 
} 
else 
{ 
    echo "text not found."; 
} 
?> 
2

RAND()函數中定義的方式工作,所以你可以用種子來生成表上的隨機選擇。爲此目的,您可以使用當前日期作爲種子和查詢將看起來像 從Table_Name選擇文本ORDER BY RAND(CURDATE())極限1