2017-03-24 66 views
0

我需要通過單擊Price將標題從低到高排序的標題對數據庫進行排序,如果再次單擊,然後從高到低排序。我錯過了如何在PHP中包含這個。我試過這個解決方案,但由於某種原因,它不工作。隨時免費維修該解決方案或提供其他東西從數據庫中通過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

試試這與jQuery/JS,而不是PHP。你可能想看看Sortable Tabular Data:http://codepen.io/jakestuts/details/tGpju – JustBaron

+0

你將不得不使''成爲一個表格。因爲它目前只是在URL中添加'?orderBy = price',但它實際上並未再次加載頁面。在創建表單後,在'action =「」'中用'$ _GET'方法添加相同的.php url。如果你不想再次加載頁面,那麼你將不得不使用jQuery。 –

+0

調查DataTables –

回答

-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> 

u能實現由jquery以最簡單的方式進行桌面分類器

+0

downvoter plz告訴downvote的原因 – user3386779

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

正如你可以在圖片中看到,你可以輕鬆地排序任何東西,用更少的喧囂。

+0

我實際上使用Datatables。雖然不在這個例子中。事情是我需要一個單獨的按鈕形式的下拉菜單,我可以選擇什麼樣的過濾我想要的。該菜單位於桌子外面。我正在尋找如何通過一些PHP函數對列進行排序的方法。 –

+0

爲什麼你需要php? –

+0

不太確定如果PHP是最好的方法。我只是在學習。我只需要用於排序表的專用菜單。你認爲JS是更好的方法嗎? –

相關問題