通过PHP从数据库中排序表

时间:2017-03-24 10:16:34

标签: php html sorting pdo

我需要从数据库中对表格进行排序,方法是单击标题,其中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;
)
?>

2 个答案:

答案 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结果:

您的搜索结果如下。

enter image description here

正如您在图像中看到的那样,您可以轻松地按任何方式排序,而不是喧嚣。

答案 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以最简单的方式实现表分类器