我在mysql数据库中有当前最新的高级联赛表。我已经使用 foreach 循环将它们从数据库中拉出来,以准确显示它们我想要的方式,我无法解决的是如何显示团队的位置。所以在联盟顶端的球队,我希望在表格排中显示第1名,对于第10名的球队,我希望能够在第19名,19名球队中展示10名球队......我似乎无法找出如何做到这一点。我认为它与COUNT
函数有关,但我似乎无法找到任何我理解的东西!
以下是我的测试页上的代码
<?php
$prem = prem_table();
?>
<table>
<th>POS</th>
<th>TEAM</th>
<th>PLD</th>
<th>GD</th>
<th>PTS</th>
<?php
foreach ($prem as $table) {
$team = $table['team'];
$pld = $table['pld'];
$win = $table['win'];
$draw = $table['draw'];
$loss = $table['loss'];
$gd = $table['gd'];
$pts = $table['points'];
?>
<tr>
<td>X</td><!-- This number needs to change to equal the position the team is in -->
<td><?php echo $team ;?></td>
<td><?php echo $pld ;?></td>
<td><?php echo $gd ;?></td>
<td><?php echo $pts ;?></td>
</tr>
<?php
}
?>
</table>
这是我用来从数据库中获取表格的函数
function prem_table() {
$sql = "SELECT *
FROM `premier_league`
ORDER BY `points` DESC , `goal_difference` DESC , `for`";
$result = mysql_query($sql) or die(mysql_error());
$prem = array();
while (($row = mysql_fetch_array($result)) !== false) {
$prem[] = array(
'id' => $row['id'],
'team' => $row['team'],
'pld' => $row['pld'],
'win' => $row['win'],
'draw' => $row['draw'],
'loss' => $row['loss'],
'for' => $row['for'],
'against' => $row['against'],
'gd' => $row['goal_difference'],
'points' => $row['points'],
);
}
return $prem;
}
答案 0 :(得分:0)
我不会对MySQL中的行进行编号,因为MySQL会存储数据,您需要编号才能进行演示。您可以使用类似
的行对行进行编号$rows = retrieveData(); // somehow retrieve data from storage
$rowNumber = 0;
foreach ($rows as $currentRow) {
$rowNumber++;
// output your data here. Current row number is in $rowNumber.
}
答案 1 :(得分:0)
Microsoft SQL服务器具有ROW_NUMBER()
函数,该函数将对行进行编号,遗憾的是MySQL没有这样的功能。
但是,您可以使用LIMIT x,y
来完成此操作例如找到第一支队伍:
SELECT xxx FROM table
LIMIT 1,1
和第19支队伍:
SELECT xxx FROM table
LIMIT 19,1
为了确保始终获得正确的位置,您还需要使用ORDER BY来确保您的行在服务器中正确排序。
同样值得一提的是,MySQL仍然会选择所有数据,但只返回你通过LIMIT
指定的内容,这对于一个英超表不会有问题,但是一个非常大的表可能会导致表现受到打击。
修改强>
正如下面的评论所指出的,OP已经更新,以包含更多信息。在回答问题时,尚不清楚他们是否已经拥有所有数据,只需要在循环中需要一个简单的递增值,或者想要查询数据库中的特定药水。我的回答清楚地回答了后者,这实际上并不是OP想要的。我会在这里留下这个答案,因为它可能在将来帮助其他人。