2011-06-11 106 views
0

我正在嘗試將投票系統整合到一個註冊用戶每天只能投票一次的網站中。所以假設他如果在今天晚上10點投票,然後明天上午10點投票,他可以投票,但他不能在同一天再投票。我如何使用php,mysql來實現這個功能。我沒有任何特定的代碼。日期時間幫助php

回答

-3

嗯,你可以這樣做:

/* Assuming $timestamp to be the timestamp of the latest vote of the user */ 
$datenow = date("m.d.y"); 
$datetimestamp = date("m.d.y", $timestamp); 

if ($datenow != $datetimestamp) { /* user can vote */ } 
+1

@downvoters介意解釋一下嗎? – Shoe 2014-05-08 18:16:27

1

在桌子上使用的唯一鍵用來保存選票,是這樣的:

CREATE TABLE vote (
    `Id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `UserId` int(10) unsigned NOT NULL, 
    `Selection` tinyint(3) unsigned NOT NULL, 
    `VotedDate` date NOT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY (`UserId`,`VotedDate`) 
); 

您可以檢查此防止重複投票簡單:

mysql> insert into vote (UserId, Selection, VotedDate) values (1, 2, now()); 
Query OK, 1 row affected, 1 warning (0.01 sec) 

mysql> insert into vote (UserId, Selection, VotedDate) values (1, 2, now()); 
ERROR 1062 (23000): Duplicate entry '1-2011-06-11' for key 'UserId' 
0

這是一般的想法,因爲這似乎是你在之後:

  • 當註冊用戶投票時,將投票作爲一行存儲在數據庫中,用戶的ID,被投票的項目的ID以及當前時間。
  • 用戶下一次投票 - 讓他們再次對同一項目進行投票時,檢查他們最後一次投票的時間(通過用戶ID和項目ID查找),並查看是否超過24小時前。如果不是,請不要接受投票。

在這種情況下,時區無關緊要,因爲您總是使用系統時間。

+0

這裏我也應該檢查系統日期。 – JABD 2011-06-11 19:27:12