我已经创建了一个投票系统,只有登录的用户才能投票。我有一个表,其中存储了用户和投票的外键,如下所示:
poll_voters
| ref_user_id | ref_poll_id |当用户投票时,我检查该用户id是否与表中的当前投票一起存在。如果是,则用户已经投票了。
我想知道是否应该在每次加载页面时都这样做,以了解是否显示投票表单或结果(如果用户已经投票)。另一种方法是有一个会话来说明用户是否已经投票。当他登录时,我需要检查并设置会话。
你觉得我该怎么做?
发布于 2013-01-23 01:40:04
最好有一个会话,并在用户登录时检查投票状态。没有必要在每个页面负载时都检查数据库,这将是低效的(尽管如果负载很轻,它仍然可以工作)。
您还需要在用户投票时刷新页面(或元素,使用ajax)。
发布于 2013-01-23 01:46:12
我建议您呈现所有不带投票指示器的HTML,然后在页面加载到浏览器中之后执行AJAX调用以获取项目的投票状态。
这允许您在浏览器上或在服务器上静态地缓存页面,但仍然支持动态更新。因此,如果用户再次访问该页面,并且他们更改了投票状态,则该页面将被更新。
否则,对于每个用户的会话,您必须始终以不同的方式重新呈现所有HTML页面。
发布于 2013-01-23 02:16:34
您可以将其添加到insert语句
if not exists(select ref_user_id
from poll_voters
where ref_user_id =@ref_user_id and ref_poll_id = @ref_poll_id)
insert into poll_voters (ref_user_id ,ref_poll_id )
values (@ref_user_id ,@ref_poll_id )这样,每个人在每次投票中只能投票一次。
https://stackoverflow.com/questions/14464615
复制相似问题