这是一个有统计数据的足球联赛。现在,统计数据就在那里。我们希望玩家可以选择对每个统计数据进行排序,以查看每个部门中谁是最高和最低的。我不知道如何让每个表进行排序(Descending,Ascending)。我一直试图弄明白,也许有人可以提供帮助。
<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>
答案 0 :(得分:1)
有两种方法可以做到这一点:
您拥有的数据量以及您是否已经拥有驱动显示的分页和服务器端代码非常重要。
如果您使用javascript界面,那么您的代码将会有所不同---您将读取原始数据并将其加载到表对象中。使用不同的javascript框架和库有许多现有的解决方案。许多拥有简单应用程序的人都是从jquery开始,并使用其中一个插件来获取表格数据。这里只是您可以使用的gazillion jquery插件之一:https://datatables.net/
为了使其成为最佳状态,您需要加载所有数据,并且必须是足够小的数据集,您可以在不破坏典型浏览器实例的情况下执行此操作。
后端/服务器端方法通常基于传递通过单击列执行的sort =参数。
<th><a href=".?sort=player">Player</a></th>
如果传递了脚本,则可以更改脚本以使用此$ _GET参数。
您的查询代码需要重写,以便在提供sort参数时,查询在SQL语句中包含相应的ORDER BY,以便您获得所需的排序。
同样,框架,组件和其他可重复使用的部分将为您节省大量时间和麻烦。
您提出了一般性问题,我提供了一般性答案。我应该指出,因为passer_rating()是一个计算列,你不能在后端对它进行排序,除非你可以将你的计算转换为SQL本身。否则,您应该能够使用任何一种方法完成此任务。