在现有的PHP / MySQL网站上集成经验值(EXP)?

时间:2011-09-14 22:36:02

标签: php mysql

我有一个网站,允许会员上传视频,评论视频,评价视频并在论坛中发帖。

我还有一个管理用户组可用的“隐藏”功能(用于审核)(基本上是一个名为hidden的列,它是boolean1或{{1我在每个表中都有。例如;如果隐藏设置为0它将不显示内容,但如果设置为1,则显示内容),这是只是一个管理滥用行为的功能。

我说每张桌子的意思;是论坛主题有一个单独的表,视频内容有自己的表等 - 但他们所有(至少我希望使用的功能)有一些共同点,他们都有一个名为{{1}的列(我在上面解释了它的作用)。

现在我正在考虑添加基本的EXP(体验点)功能,以便会员可以获得X点数来执行特定操作,例如上传视频,在论坛中发布主题,评价视频,评论视频等。

总EXP将显示在会员资料中以及他们的活动流上(例如,用于发布主题的剩余X点数)。

但是我不确定如何实现这个,因为我只希望总EXP考虑不隐藏且与活动流相同的内容(仅显示从未隐藏的内容获得的EXP)

对我来说,dillema是由于我有多个包含不同内容的表,并且我会定期执行cron作业来清理(删除)隐藏内容,我希望每个动作的EXP都可以轻松改变 - 所以如果有一天我决定我不再慷慨,给那些发表主题并将其改为2的人给予50分,所有那些过去创建主题的人也会自动生效(所以也许有EXP某个动作在一个类或配置文件中?)。

概述:

  1. 某些操作会给出EXP点数。
  2. 可以轻松更改EXP积分(所有收到改变后的EXP的人都会自动生效)。
  3. EXP点考虑了“隐藏”功能(因此只考虑未隐藏的内容)。
  4. 希望以后能够轻松添加新的EXP积分。
  5. 只需要最大值,例如: 4 EXP(无论采取何种行动)每天给予(使其更具挑战性)。
  6. 我有一个想法,也许是动态做到这一点(就像根本没有将EXP存储在数据库中一样 - 而只是0 hidden个查询COUNT()然后WHERE hidden = 0来多少EXP - 所以如果内容被隐藏,EXP将自动生效(这就是我喜欢它的方式),但是垮台可能意味着它可能意味着复杂* s并且每天最多4个可能是一个问题)?

    我很感激,如果你可以发布你将如何做到这一点(以及一个例子 - 如果可能的话),因为我已经敲了几个小时。

    感谢您的回复。

1 个答案:

答案 0 :(得分:0)

我会创建一个专门用于管理数据库中的日志的类。我在想数据库跟踪:

  • USER_ID
  • 原因
  • 实体
  • ENTITY_ID
  • 计数
  • 时间戳

entity 是获得积分的内容类型的标识符,例如“视频”。 * entity_id *是实体的ID号(例如,为添加视频ID#24而奖励2分)。 计数是一个布尔值,告诉您的系统是否计算点数。

当管理员隐藏任何内容时,无论是视频,帖子还是评级,您的日志管理器都会查找为该实体指定的关联点,与entity_id匹配,并将计算的字段设置为0这使您可以轻松获得特定用户的点数总和,但只能计算应计算的点数。

当用户做任何保证接收积分的事情时,日志管理员可以找到在该特定日期为该用户授予了多少积分,并且如果全部金额推动总数超过4,则添加全部金额或差额

我还没有完全想到这一点,所以我的逻辑可能存在缺陷,但这可能足以让你开始。