MSSQL数据库TOP第一,第二,第三行。我想让这些球员像这样:
我现有的顶级现在是这样的:
我的PHP代码是这样的:
<?php
day_reset_check();
$ima_topa = mssql_query("Select TOP 10 Name, Class, cLevel, ".COLUM_DAY_RR." From Character Order By ".COLUM_DAY_RR." desc, cLevel desc");
$sk_topa = mssql_num_rows($ima_topa);
for($i=0;$i < $sk_topa;++$i) {
$vieta = $i+1;
$topo_masyvas = mssql_fetch_array($ima_topa);
$rase = "$topo_masyvas[Class]";
if($rase == 0){ $klase ='DW'; }
if($rase == 1){ $klase ='SM'; }
if($rase == 2){ $klase ='GM'; }
if($rase == 16){ $klase ='DK'; }
if($rase == 17){ $klase ='BK'; }
if($rase == 18){ $klase ='BM'; }
if($rase == 32){ $klase ='Elf'; }
if($rase == 33){ $klase ='ME'; }
if($rase == 34){ $klase ='HE'; }
if($rase == 48){ $klase ='MG'; }
if($rase == 49){ $klase ='DM'; }
if($rase == 64){ $klase ='DL'; }
if($rase == 65){ $klase ='LE'; }
if($rase == 80){ $klase ='SUM'; }
if($rase == 81){ $klase ='BS'; }
if($rase == 82){ $klase ='DM'; }
if($rase == 96){ $klase ='RF'; }
if($rase == 97){ $klase ='FM'; }
echo "
<tr class=\"top_tr\">
<td width=\"30px\"<td><font color=\"gray\">$vieta.</font></td>
<td width=\"100px\" align=\"left\" style=\"text-indent: 15px;\"<td><font color=\"gray\">$topo_masyvas[Name]</font></td>
<td><font color=\"gray\">$klase</font></td>
<td><font color=\"gray\">$topo_masyvas[cLevel]</font></td>";?>
<td><font color=\"#C7C7C7\"><?=$topo_masyvas[COLUM_DAY_RR]?></font></td>
</tr>
<?
}
?>
我想从表中获取前10行。但是前3个需要显示图像的位置1,2,3。其他的数字就像在图像中展示。我应该使用什么代码。请帮助我真的很困惑......
答案 0 :(得分:0)
在SQL查询中,您可以添加ROW_NUMBER()命令。例如:
$ima_topa = mssql_query("Select TOP 10 ROW_NUMBER() OVER (ORDER BY ".COLUM_DAY_RR." desc, cLevel desc) AS 'Rank', Name, Class, cLevel, ".COLUM_DAY_RR." From Character Order By ".COLUM_DAY_RR." desc, cLevel desc");
然后在你的FOR循环中,有一些条件来处理排名1,2和3不同的结果。例如:
if ($topo_masyvas[Rank] == 1) {
// first place gets gold star
}
elseif ($topo_masyvas[Rank] == 2) {
// second place gets silver star
}
elseif ($topo_masyvas[Rank] == 3) {
// third place gets bronze star
}