这是一个有统计数据的足球联赛。现在统计数据就在那里。我们想让玩家可以选择对每个统计数据进行排序,以查看每个级别中谁是最高的和最低的。我不知道如何让每个表排序(降序,升序)。我一直在努力解决这个问题,也许有人可以提供帮助。
<h2>Passing Leaders</h2>
<table class="style-std" id="passing-leaders-table">
<thead>
<tr>
<th>Player</th>
<th>#</th>
<th>Team</th>
<th>Com</th>
<th>Att</th>
<th>Yd</th>
<th>Td</th>
<th>Int</th>
<th>1p</th>
<th>2p</th>
<th>Dr</th>
<th>Df</th>
<th>Sk</th>
<th>QBR</th>
</tr>
</thead>
<tbody>
<? foreach ($stats['passing'] as $row) : ?>
<tr>
<td><?=$row['name'] ?></td>
<td><?=$row['number'] ?></td>
<td><?=$row['team'] ?></td>
<td><?=$row['completion'] ?></td>
<td><?=$row['attempt'] ?></td>
<td><?=$row['yard'] ?></td>
<td><?=$row['touchdown'] ?></td>
<td><?=$row['interception'] ?></td>
<td><?=$row['1pat'] ?></td>
<td><?=$row['2pat'] ?></td>
<td><?=$row['drop'] ?></td>
<td><?=$row['deflection'] ?></td>
<td><?=$row['sack'] ?></td>
<td><?=passer_rating($row) ?></td>
</tr>
<? endforeach ?>
</tbody>
最佳答案
有两种方法可以做到这一点:
- 取决于客户端(Javascript)
- 取决于服务器
您拥有的数据量,以及您是否已经拥有驱动显示的分页和服务器端代码非常重要。
如果您使用 javascript 接口(interface),那么您的代码会有所不同 --- 您将读取原始数据并将其加载到表对象中。有许多使用不同 javascript 框架和库的现有解决方案。许多拥有简单应用程序的人从 jquery 开始,并使用其中一个插件来处理表格数据。这只是您可以使用的众多 jquery 插件之一:https://datatables.net/
为了达到最佳效果,您需要加载所有数据,并且数据集必须足够小,这样您就可以在不杀死典型浏览器实例的情况下执行此操作。
后端/服务器端方法通常基于传递通过单击列执行的 sort= 参数。
<th><a href=".?sort=player">Player</a></th>
如果传递了 $_GET 参数,您可以更改脚本以使用它。
您的查询代码需要重写,以便在提供排序参数时,查询在您的 SQL 语句中包含适当的 ORDER BY,以便您获得所需的排序。
同样,框架、组件和其他可重复使用的部分将为您节省大量时间和麻烦。
您问了一个一般性问题,我提供了一个一般性答案。我应该指出,由于 passer_rating() 是一个计算列,您将无法在后端对其进行排序,除非您可以将计算转换为 SQL 本身。否则,您应该能够使用任一方法完成此操作。
关于php - 排序列 PHP, football Stats,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37738535/