实施点系统

时间:2011-07-21 19:23:06

标签: php mysql

我正在努力整合雅虎!回答样式点系统,其中贡献某些内容会使您(用户)获得一定数量的点。我正在考虑实施这个系统的方法。

对于PHP来说,我有点n00b(谢谢CodeIgniter!)所以我只是在寻找有关如何解决这个问题的建议。

我有两个想法。第一个是在我的用户表中有一个列,当用户执行某些操作时,该列被添加到一定数量的点并从中减去。我想这会是更轻松的代码,但可能不如下一个想法那么安全。

另一个想法是每当调用用户的点时进行数学计算。我想知道这会如何影响性能,或者它是否是一个好主意。

例如,登录该站点的人将获得几个点(每天限制一次)(如果不将点存储在表中,则可能无法实现)。另一个例子是,当他们提交定义时,他们获得15分,日志条目获得10分。我也想给他们相对于他们的分数的徽章。

我猜测存储在表格中的点数是最好的路线,但我希望能够更好地了解在进入它之前如何处理这个问题。非常感谢任何帮助。

*编辑: 我应该补充说,只有分配了点数的用户(至少是计划)。

3 个答案:

答案 0 :(得分:0)

某些操作有助于积分,部分操作(提交,登录,评论)只是改变了价值。然后保护这些行动 - 无论如何你都需要保护它们......

答案 1 :(得分:0)

我的数据架构如下所示:

Content:
  id: PK
  user_id: integer    # The author
  title: string
  contents: string
  voteCount: integer

User:
  id: PK
  name: string
  votesLeft: integer
  rating: integer

Votes:
  content_id: PK
  user_id: PK
  is_positive: boolean

然后,在内容表中保存投票记录(以保持良好的表现)以及投票表(这样您就可以撤消投票,并跟踪用户在哪篇文章上投票。)如果用户的投票数量有限,可以存储在votesLeft中。

答案 2 :(得分:0)

你可能想看一下这些模式:

因此,您可以将快照作为备份(可能每天一次或每周一次),然后使用会计分录管理帐户:)基本上,在您的用例中,分数=金钱,他们负责