需要一些关于php点系统的指导

时间:2012-02-01 09:27:08

标签: php mysql

我正在尝试构建一个点系统,用于检查用户拥有多少积分并为其提供特定标题。

我准备了一个表格,当检查哪个标题应该给成员时,php脚本可以参考该表格。

MYSQL表结构如下:
名称:ptb
结构:pts,title

例如,如果你有100分,你就获得了冠军 - “退伍军人”,如果你有500分,你就获得了“职业”头衔。假设我在 ptb表中有 pts:100,title:veteran pts:500,title:pro 行。

然而我偶然发现了一个令人困惑的事实 如何使用php来确定使用ptb表数据给用户的标题?

如果用户等于或高于 100分将获得退伍军人作为标题但是也超过 100这意味着php脚本还需要确保它低于500pts。

我仍然不确定如何使用php来做到这一点。因为我很困惑自己。 我希望有人能够理解并为我提供一些指导。

谢谢!

2 个答案:

答案 0 :(得分:3)

您选择所有带有enought积分的记录,将得分最高的记录排在最前面并删除其余记录。

SELECT title FROM ptb WHERE pts <= $points ORDER BY pts DESC LIMIT 1

答案 1 :(得分:2)

(如果您想为多个用户检索标题,PiTheNumber的解决方案效果不佳)

由于积分会随着时间的推移而变化,而且多个用户可以拥有相同的标题,听起来这应该是2个表:

CREATE TABLE users (
  userid ...whatever type,
  points INTEGER NOT NULL DEFAULT 0
  PRIMARY KEY(userid)
);
CREATE TABLE titles (
  title VARCHAR(50),
  minpoints INTEGER NOT NULL DEFAULT 0
  PRIMARY KEY (title),
  UNIQUE INDEX (minpoints)
);

然后...

SELECT u.userid, u.points, t.title
FROM users u, titles t
WHERE u.points>=t.minpoints
AND ....other criteria for filtering output....
AND NOT EXISTS (
   SELECT 1
   FROM titles t2
   WHERE t2.minpoints>=u.points
   AND t2.minpoints<=t.minpoints
); 

(有other ways来编写查询)