我有一个基于文本的黑手党游戏,我被选中了一些GameRecords。游戏记录都在"用户"中定义。表。对于这个例子,我使用" totalcrimes"。我需要从users表中选择所有行并按totalcrimes排序,然后找出每个特定用户正在查看页面的行。
如果我是"排名" 30日它会回响#34; 30"。我用来查找前5名的代码在这里我需要扩展它:
<?php
$i = 0;
$FindCrimes = mysql_query("SELECT * FROM players WHERE status='Alive' AND robot = 0 ORDER BY `totalcrimes` DESC LIMIT 5");
while($Row = mysql_fetch_assoc($FindCrimes)){
$Username = $Row['playername'];
$TotalCrimes = number_format($Row['totalcrimes']);
$i++;
echo "
<tr>
<td bgcolor='#111111' width='5%'>$i</td>
<td bgcolor='#111111' width='50%'><a href='viewplayer?playerid=$Username'>$Username</a></td>
<td bgcolor='#333333' width='45%'>$TotalCrimes</a></td></td>
</tr>
";
}
?>
答案 0 :(得分:0)
我将假设您已经设置了一个变量来保存当前用户ID号和总罪行,因此在这种情况下,我将使用$user
作为我的变量。
改变你的健康状况。
现在,我看到2个实例,你的意思是你的帖子不是很具体,所以我会解决这两个问题。
要显示页面顶部的数字,您可以使用类似的内容
<?php
$sql = "SELECT * FROM `players` WHERE `totalcrimes` > '{$user['totalcrimes']}'";
$run = mysql_query($sql);
$rank = mysql_num_rows($run) + 1;
echo 'Your rank: ' . $rank;
除此之外,我发现它可能被用来突出你的行,所以这样就足够了;
<?php
$i = 0;
$FindCrimes = mysql_query("SELECT * FROM players WHERE status='Alive' AND robot = 0 ORDER BY `totalcrimes` DESC LIMIT 5");
while($Row = mysql_fetch_assoc($FindCrimes))
{
$Username = $Row['playername'];
$TotalCrimes = number_format($Row['totalcrimes']);
$i++;
$primary = '#111111';
$secondary = '#333333';
if ($Row['id'] == $user['id'])
{
$primary = '#222222';
$secondary = '#444444';
}
echo "<tr>
<td bgcolor='$primary' width='5%'>$i</td>
<td bgcolor='$primary' width='50%'><a href='viewplayer?playerid=$Username'>$Username</a></td>
<td bgcolor='$secondary' width='45%'>$TotalCrimes</a></td></td>
</tr>";
}
如果这些都没有提出您的要求,请发表评论,我会编辑以适应。
edit
:我已经在游戏上工作了几年 - 小心分享与你的游戏的链接?
答案 1 :(得分:0)
这可以解决问题
SELECT COUNT(*)+1 as rank
FROM users
WHERE totalcrimes > (SELECT totalcrimes
FROM users
WHERE user_id='12345' AND status='Alive' AND robot='0');
因此,它会计算所有行totalcrimes
比所选用户更多的行(在此示例中,我使用了user_id
列和一些id 12345
),而不是在该总和上添加1并返回为rank
值。
当然,修改括号内的WHERE
子句以使其适用于您。
我认为表名是users
,用户ID是整数user_id
。
此查询的作用是什么?它会从rank
表users
中返回选定行数+ 1作为totalcrimes
列,其中totalcrimes
大于{{}一些用户的1}}该用户的全部资源由另一个查询(由其user_id
)选择。如果您有多个具有相同totalcrimes
值的用户,则此查询将为所有用户返回相同的排名。