我正在尝试构建一个 php 排名系统,用户可以在其中以 1-5 的比例对图像进行排名。
根据图像的排名方式决定它在排行榜上的位置(排名编号)。排名应该根据从用户那里收到的不同评级而变化。
这方面的一个例子是这里的排名系统。http://www.newgrounds.com/portal/view/601966(右侧,页面下方。)
我只是在寻找任何可以帮助我实现这一目标的信息。
谢谢。
我正在尝试构建一个 php 排名系统,用户可以在其中以 1-5 的比例对图像进行排名。
根据图像的排名方式决定它在排行榜上的位置(排名编号)。排名应该根据从用户那里收到的不同评级而变化。
这方面的一个例子是这里的排名系统。http://www.newgrounds.com/portal/view/601966(右侧,页面下方。)
我只是在寻找任何可以帮助我实现这一目标的信息。
谢谢。
以下是您需要了解的一些事项:
你需要一个数据库。在您的数据库中,您需要存储要排名的每个图像,在名为“图像”的表中执行此操作。在此表中,您将为每个图像提供一个“自动递增”主键。(这意味着对于您添加到数据库的每个新行,主键将自动比前一行 +1)。这意味着每个图像旁边都有一个唯一的行号 - 标识该特定行。打电话给这个专栏id
。(我们将在列中的其他表格中引用它image_id
)。
接下来,您需要一个名为“votes”的表。在此表中,您可以存储您可能需要的各种信息,但您需要存储的只是“图像”表中的唯一图像编号和某人投票的值。你最终会得到这样的东西:
image_id | vote_value
1 | 3
2 | 5
1 | 3
4 | 1
4 | 3
现在您可以查询此信息以获取您的排行榜。查询可能如下所示:
SELECT image_id, SUM(vote_value) AS rank FROM votes GROUP BY image_id ORDER_BY rank;
这将为您提供按排名排序的“image_id”列表(即所有选票的总数)。
然后您可以返回到您的图像表并从该表中获取该图像的信息。
SELECT name, url FROM images WHERE id=#image_id we got above#;
希望这对您有所帮助。:) 如果你被卡住了,回来再问一次。
创建一个名为 votes 的表并将其绑定到您的 images 表:
投票:
vote_id INT(11) PK
user_id INT(11)
image_id INT(11)
评分 TINYINT(1)