2011-06-11 89 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