我需要从数据库中对表格进行排序,方法是单击标题,其中Price为从低到高排序,如果我再次单击,则排序从高到低。我想念如何在PHP中包含它。我试过这个解决方案,但由于某种原因,它无法正常工作。随意修复此解决方案或提供其他内容
我正在使用PDO方法
<?php
include 'inc/header.php';
$cars = $db->prepare("SELECT name, price FROM cars");
$cars->execute();
$cars = $cars->fetchAll(PDO::FETCH_ASSOC);
?>
这是HTML:
<table>
<thead>
<tr>
<th>Name</th>
<th>
<a href="?orderBy=price">Price</a>
</th>
</tr>
</thead>
<tbody>
<?php foreach($cars as $car): ?>
<tr>
<td>
<?php echo $car['name'];?>
</td>
<td>
<?php echo $car['price'];?>€
</td>
</tr>
<?php endforeach;?>
</tbody>
</table>
<?php
$orderBy = array('price');
$order = 'type';
if (isset($_GET['orderBy']) && in_array($_GET['orderBy'], $orderBy)) {
$order = $_GET['orderBy'];
}
$query = 'SELECT * FROM cars ORDER BY '.$order;
)
?>
答案 0 :(得分:0)
只需使用Jquery DataTables,在表格中添加ID,然后初始化数据表,它就可以按您想要的任何列对数据进行排序。超级易用,它还增加了很酷的功能,如表格中的分页,如果你有很多结果,它不会太长。还可以选择将表格导出为pdf和其他类型。
<?php
include 'inc/header.php';
$cars = $db->prepare("SELECT name, price FROM cars");
$cars->execute();
$cars = $cars->fetchAll(PDO::FETCH_ASSOC);
?>
<!-- include dataTables from the cdn -->
<link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.13/css/jquery.dataTables.css">
<script type="text/javascript" charset="utf8" src="//cdn.datatables.net/1.10.13/js/jquery.dataTables.js"></script>
<table id="dataTable">
<thead>
<tr>
<th>Name</th>
<th>
<a href="?orderBy=price">Price</a>
</th>
</tr>
</thead>
<tbody>
<?php foreach($cars as $car): ?>
<tr>
<td>
<?php echo $car['name'];?>
</td>
<td>
<?php echo $car['price'];?>€
</td>
</tr>
<?php endforeach;?>
</tbody>
</table>
<script type="text/javascript">
$(document).ready(function() {
$('#dataTable').DataTable();
} );
</script>
DataTable结果:
您的搜索结果如下。
正如您在图像中看到的那样,您可以轻松地按任何方式排序,而不是喧嚣。
答案 1 :(得分:-1)
使用表格分类器插件
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="http://tablesorter.com/__jquery.tablesorter.min.js"></script>
$(document).ready(function()
{
$("#myTable").tablesorter();
}
);
<table id="myTable" >
<thead>
<tr>
<th>Name</th>
<th>
<a href="?orderBy=price">Price</a> //u can give the table heading
</th>
</tr>
</thead>
<tbody>
<?php foreach($cars as $car): ?>
<tr>
<td>
<?php echo $car['name'];?>
</td>
<td>
<?php echo $car['price'];?>€
</td>
</tr>
<?php endforeach;?>
</tbody>
</table>
你可以通过jquery以最简单的方式实现表分类器