如果您有一个会话表,您可以从中提取记录,然后使用这些值来获取硬币值,然后降序排序。
如果我们假设您的 Session 表是 sessions(session_id int not null auto_increment, user_id int not null, session_time,...) 并且我们假设只有登录的用户才有会话值,那么您的 SQL 将如下所示:(注意:我假设您也有一个 user_id gebruikers 表上的列)
SELECT g.*
FROM gebruikers as g, sessions as s WHERE s.user_id = g.user_id
ORDER BY g.coins DESC
然后,您将使用行迭代器循环遍历结果并显示“1”、“2”、“3”等。其简短版本如下所示
//Connect to database using whatever method you like, I will assume mysql_connect()
$sql = "SELECT g.* FROM gebruikers as g, sessions as s WHERE s.user_id = g.user_id ORDER BY g.coins DESC";
$result = mysql_query($sql,$con); //Where $con is your mysql_connect() variable;
$i = 0;
while($row = mysql_fetch_assoc($result,$con)){
$row['rank'] = $i;
$i++;
//Whatever else you need to do;
}
编辑
在http://sqlfiddle.com/#!2/8faa9/6 找到一个 SQLFiddle
我遇到了一些在那里工作的东西;我不知道在 php 中给出时它是否会起作用,但我想我会以任何一种方式向你展示它
SET @rank = 0; SELECT *,(@rank := @rank+1) as rank FROM something order by coins DESC
编辑 2
这适用于来自文件的 php 查询。
SELECT @rank:=@rank as rank,
g.*
FROM
(SELECT @rank:=0) as z,
gebruikers as g
ORDER BY coins DESC