首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用PHP+MySql的投票系统?

使用PHP+MySql的投票系统?
EN

Stack Overflow用户
提问于 2012-09-23 16:58:57
回答 5查看 4.1K关注 0票数 2

我们必须制作一个投票系统,让用户在不同的职位上为不同的候选人投票。有一个投票者的登录名。如何存储一个投票者的选票,然后将该选票与之前的选票相加?唯一可能的方法是将每一次投票都存储在数据库中,对吗?但是数据库的结构会是什么样子呢?你是如何计算的呢?

编辑:

投票系统并不是只有一组候选人可以投票。它有市长、副市长、参议员等,人数太多了。这就是我困惑的原因。如果这只是一个总统的投票系统,那就容易多了。所以如果我有一个表给投票者,有一列他/她投票的候选人,这是不可能的,因为投票者投票给许多候选人。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-09-23 17:07:37

一种更好的方法是使用不同的表来存储投票。该表将有两个属性(VoterId和CandidateId),如果您允许从该表中获得多个投票,则可以获取投票计数。

但最好将VoterId作为此表中的主键。避免多次投票

CandidateType:- (TypeId(PK),typeName,maxVotePerVoterForThisType)

投票表:- (voterId(PK),voterName,otherInfo)

选区候选人表:- (candidateId(PK),candidateName,,otherInfo,TypeId(FK))

投票:- (voterId(PK,FK),TypeId(PK,FK),candidateId(FK))

*EDIT:-在原始帖子中使用更改的需求编辑模式

*编辑:-在CandidateType表中添加了一个允许multiple votes的字段。(例如:如果10 Senators类型的maxVotePerVoter设置为10,则现在投票者可以投票给此类型。)

票数 3
EN

Stack Overflow用户

发布于 2012-09-23 17:03:02

你应该将每个候选人都存储在一个表中,将位置放在另一个表中,然后根据ID建立关系,投票系统相对简单:

数据库:

代码语言:javascript
运行
复制
id, position_id, candidate_id, votes

然后是PHP

代码语言:javascript
运行
复制
$query = "UPDATE `votes` SET `votes`=`votes`+1 WHERE `position_id`=1 AND candidate_id=1"; // adds 1 vote where position_id is 1 and candidate_id is 1
票数 1
EN

Stack Overflow用户

发布于 2012-09-23 17:05:45

这3个表是您的帐户(投票者)和候选人所必需的。

代码语言:javascript
运行
复制
Account: Id (PK), Name, Password
Candidates: Id (PK), Name
Votes: AccountId (PK), CandidateId (PK)

在投票时,在投票中插入一行。这可以防止由于PK导致的重复投票。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12550995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档