回答
如何一起使用的線下面的內容:
quotes
------
quote_id
..
.
quote_rota
----------
quote_rota_id
quote_id
date_shown
然後使用查詢,如下面的獲得一個隨機的報價是不是過去7個報價已經之一顯示:
SELECT * FROM quotes WHERE id=(
SELECT FLOOR(MIN(quote_id)+(RAND()*MAX(quote_id))
FROM quotes
) AND quote_id NOT IN (
SELECT quote_id FROM quote_rota ORDER BY date_shown DESC LIMIT 7
) LIMIT 1;
// process and retrieve quote_id then store in quote_rota
如果結果存儲在由cron作業/計劃任務填充的文件,那麼你可以有這種持久的,只要你願意(例如24小時,7天,1小時, Ë tc)
或者,您可以在報價表中添加一列,以表明它是「當前」報價(例如,活動),然後使用:
SELECT quote_id FROM quotes WHERE id=(
SELECT FLOOR(MIN(quote_id)+(RAND()*MAX(quote_id))
FROM quotes
) AND quote_id NOT IN (
SELECT quote_id FROM quote_rota ORDER BY date_shown DESC LIMIT 7
) LIMIT 1;
// process and retrieve quote_id then update "current" flag
日程根據需要多次,然後使用類似這樣的任務如下得到報價:
SELECT * FROM quotes WHERE active = 1
最簡單的方法是將存儲當天報價應該在網站上顯示爲在MySQL表中的列,然後作出該具體報價查詢像
$query = "SELECT * FROM quotes WHERE date = CURDATE();";
,如果你不存儲在數據庫中的日期,它變得更加困難和複雜 - 你不得不隨機顯示的條目,但跟蹤哪些表現出一個如果這樣的話,相同的報價不會在短期內達到兩倍割讓。所有這些都是可行的,但可能比必要的更復雜。
也許有可能使用某種哈希機制來確定要顯示的報價?只要找出將日期映射到唯一報價記錄的方法即可。 – 2010-05-13 09:27:00
@很好的主意!人們可以定義一個起點(例如,今天=第1行)並計算從該點開始的日期。第30天將是第30行,第31天第31行......等等。 – 2010-05-13 11:56:08
您需要爲每24小時運行一次的服務器設置一個cron選項卡。但是,設置它取決於你有什麼服務器。有關cron的更多信息,請致電http://en.wikipedia.org/wiki/Cron。如果您使用cPanel,www.upstartblogger.com/how-to-create-a-cron-job-in-cpanel可能會對您有所幫助。
很多方法。
其中一種方法是在引號表中添加2個列'isdisplayed'和'displayedwhen'。
使用這兩個額外字段,您可以跟蹤顯示哪個報價以及顯示多長時間。
如果你不希望使用任何緩存解決方案,你不想附加將來使用的日期爲每個引號,你可以這樣做:
SELECT id, quote FROM quotes WHERE date_used = NOW();
如果返回null,做是這樣的:
$count = SELECT COUNT(*) FROM quotes WHERE date_used = '0000-00-00'
獲取未用引號的數量,然後隨機選擇一個報價:
$rand = rand (0, $count);
$quote = SELECT id, quote FROM quotes WHERE date_used = '0000-00-00' LIMIT $rand, 1
UPDATE quotes SET date_used = NOW() WHERE id = $quote['id']
我的問題是假設我有兩個表格填充引號,其他是空的。當我調用命令顯示quots時,它應該插入到當前日期和時間的第二個。每次加載頁面時都應該檢查存儲的時間。當時間結束時,第二個表格中的數據必須更新另一個新的日期和時間。你怎麼看?? – mathew 2010-05-13 09:34:58
如果您有一組引號,則可以使用模數來確保當前日期和參考日期之間的差異將落入數據庫表中的引號數範圍內。
SELECT *
FROM `quotes`
WHERE id = DATEDIFF(CURDATE() , '2010-05-01') MOD (SELECT COUNT(*) FROM `quotes`)
- 1. 顯示時間在24小時內
- 2. 以24小時格式顯示時間
- 3. 顯示24小時格式時間?
- 4. iphone:NSDateFormatter如何以24小時格式顯示時間?
- 5. 如何僅顯示時間並更改爲24小時制
- 6. 如何使用TextClock以24小時格式顯示時間?
- 7. 顯示最近24小時的推文
- 8. x軸上顯示Highcharts 24小時
- 9. 如何在Textview中顯示報價?
- 10. 顯示器最高報價,但仍顯示沒有報價
- 11. 如果時間少於24小時前顯示x時間前
- 12. 如何顯示過去24小時推送的git變更?
- 13. SQL查詢 - 如何在過去24小時內顯示點數?
- 14. 我想在php中顯示24小時後的內容如何?
- 15. 如何格式struts-dojo datetimepicker顯示24小時而不是12小時?
- 16. Dropdown 24小時選項值和12小時顯示
- 17. 顯示在過去24小時,按小時
- 18. 顯示12小時制和24小時制
- 19. 轉換12小時至24小時蟒蛇顯示24:00:00爲24:00:00,而不是00:00:00
- 20. 如何顯示價格格式(小分)
- 21. 如何讓unix時間戳顯示24小時以上的時間?
- 22. 如何在SQL中獲取最近24小時的報告?
- 23. 如何將24小時格式TimeSpan轉換爲12小時格式TimeSpan?表示爲24小時格式
- 24. 24小時數= 24個值
- 25. 24小時顯示時間...如果不是30分鐘,我可以顯示小時嗎?
- 26. 的時間表示24小時以上
- 27. Android日期時間格式錯誤時間顯示12小時和24小時
- 28. AppCache 24小時?
- 29. 問題在顯示24小時格式時間
- 30. 在WPF數據網格中顯示24小時時鐘
他們得到24小時後刪除?還是可以重複使用? – 2010-05-13 09:16:56
是的,它是在一個單獨的表 – mathew 2010-05-13 09:30:19
,不回答@羅素的問題:D – 2010-05-13 09:31:19