我正在寫一個前10名的投票系統。民意調查機構每週都會對他們的前10名進行投票。我應該如何每週存儲他們的投票?也就是說,如何控制投票的存儲週期(mySQL)或我的PHP(5.x +)計算?我之前通過在我設置爲0的服務器上創建一個文件「week.txt」來完成此操作,然後每週運行一次cron作業以更新+1。當我將數據存儲在數據庫中時,我只需加載文件並知道它是哪一週。我在尋找更優雅的東西。我應該如何存儲每週投票數據?
系統必須:
- 能夠在一年中的任何時間啓動。
- 能夠跳過幾周。
- 不需要在計算過程中對週數進行混洗。
- 會比1客事件免維護由人,其他(如說:「這是起始日期」,「這是最後一天」,曾經在一個藍色的月亮)。
- 使用PHP和MySQL,文件或其它「標準」的服務器項目(除其他編程語言或數據庫)。
- 不要求其它軟件(如「安裝軟件X,它這樣做!」)。
- 民意調查可能是不懂技術的人,所以要求他們比其他任何東西「請輸入您的前10名」或「編輯您的前10名」是不允許的。
- 能夠走在歷年年底順利(例如開始在十一月和結束日)。
其他信息:
- 民意調查將只允許單日投票。
- 我將運行在多一次民調互相之間有沒有關係,因此可能具有不同的跳躍周。
我之前使用過的系統無法工作,因爲爲了跳過幾周,它需要互動並違反#4,否則不能跳過幾周,從而違反#2。
我想過2個系統,但他們有上述的部分的故障:
(系統#2)使用PHP的日期(「W」)時,民意調查投票。因此,第一週他們都得到了第48周(例如),第49周第2周,所以很容易知道哪一週是什麼。問題是有些民意測驗會在歷年內結束,因此我會以48,49,50,51,52,1,2,3,4和上面的#3結束。另外,如果我們跳過了幾周,我們可能會以48,49,50,1,2,3結尾,這違反了上面的#2和#8。
(系統#3)然後,我有想法只是存儲他們進入民意調查的日期。我會設定一個日期,以便在第一次投票前一週計算,因此,它只需要計算幾周之間的差異,我就知道週數。但是除非我們改變違反#3的日子,否則沒有簡單的方法可以跳過違反#2的周。
(System#4)然後我有了這樣一個想法:當民意調查機構首次投票時,我們只是將它記錄爲他們的第1周投票。當他們接下來投票時,它是第2周,依此類推。如果他們想編輯他們的投票(同一天),他們只需使用編輯按鈕,我們就不會記錄新的投票,因爲他們已經表示它是一個編輯。唯一的問題是,如果民意測驗專員忘記了一週,這意味着我必須進入並更正數據(增加一個空白周或更改他們投票的週數,但違反#4)。這很好地處理了跳過周。也許一個cron工作可以解決這個問題?如果有人忘記了,投票結束後運行的cron作業會在空白的一週進入。可以編程查看輸入的最大週數,如果有任何用戶名沒有那週數,只需輸入空白數據。
如果您可以調整上述任何系統以符合所有標準,那也可以。我正在尋找一種簡單而優雅的免提解決方案。
請索取任何其他澄清信息。
要回答rodneyrhem,輪詢算法#1 = 10分,#2 = 9分,等#10得到1分。 – MECU
投票也只能在1天內進行,所以問題是「投票第三週的投票是什麼?」 – MECU