2013-05-07 61 views
0

我有一個網站,人們記錄(或記錄)他們奔跑的距離。我想創建一個排行榜,該月份結束後會自動重置爲零。如果我可以保存他們那個月的總距離,那也是理想的。每次運行都與ID綁定,並且我有一個可以累計每月距離的變量,但顯然當他們記錄新的運行發生變化時。我不知道如何才能在這個月記錄它,如果他們提前登錄,不會驚慌失措。使用PHP處理月度事件

任何幫助,將不勝感激。

我已經嘗試每月創建MySQL的距離值,所以每次登錄時,如果它是該月份,它將添加到它。但是,我應該如何重置?

+0

創建活動? – hjpotter92 2013-05-07 00:27:03

回答

2

您正在跟蹤每次運行的日期,對吧?然後,你應該能夠做這樣的事,並避免存儲總計:

SELECT SUM(Runs.Miles) as MonthlyTotal 
FROM Runs 
where MONTH(Runs.Date) = MONTH(CURDATE()) and YEAR(Runs.Date) = YEAR(CURDATE()) 

(想必你也想通過過濾或一組用戶ID另外,我懷疑它可能是更有效的預 - 計算每月的開始和結束和where子句中使用BETWEEN,請諮詢我們的朋友EXPLAIN

如果你讀的負載過高,使這個現實,你可以在每月的總存儲在不同的表每次運行被添加或更新時通過觸發器更新,並在每個月的月初通過cron進行更新。這種非規範化總是讓事情變得更加複雜,所以在我有理由相信這是必要的之前,我會避免它。