[英]PHP/MYSQL Sorting an echo table of mysql data
我已經完成了一個使用mysql構建php網站的課程。
我需要能夠基於列對數據表進行排序。 使用PDO從mysql DB中檢索數據。 然后我在循環遍歷每一行數據時只回顯一個表
關於如何按列對數據進行排序的任何想法? 最好,我希望能夠通過單擊表頭對數據進行排序(升序)。 但是我願意接受想法。
下面的代碼:PHP:
function displayBooks($data){
echo "<table id= \"allBooks\">";
echo "<th>Book ID</th><th>Title</th><th>Description</th><th>In Stock</th><th>Price</th><th>Cateogry</th>";
#foreach($data as $row)
{
echo "<tr>";
echo "<td>".$row['bookID']."</td>";
echo "<td>".$row['title']."</td>";
echo "<td>".$row['description']."</td>";
echo "<td>".$row['quantity']."</td>";
echo "<td>£".$row['price']."</td>";
echo "<td>".$row['name']."</td>";
echo "</tr>";
}
echo "</table>";
....
//Retrieve all books
$all_books_query = "SELECT b.bookID,b.title,b.description,b.quantity,b.price,c.name FROM Books b
INNER JOIN Book_Category bc ON bc.bookID = b.bookID
INNER JOIN Category c ON c.catID = bc.catID
GROUP BY b.bookID;";
$rows = $db->query($all_books_query)->fetchAll();
在頁面的其余部分中,我還有更多的PHP。 不知道我還需要在其中包括什么才能使問題更有意義,但是任何想法都會有所幫助。
設置一種機制,將用戶的排序要求發送回服務器(query param?post?),並使用這些要求在MySQL查詢中設置ORDER BY子句。
這是一個簡單的,非魯棒的實現
您必須使用參數創建一些活動鏈接,如下所示:
function displayBooks($data){
echo "<table id= \"allBooks\">";
echo "<th><a href='index.php?col=1&order_by=1'>Book ID ASC</a>|<a href='index.php?col=1&order_by=2'>Book ID DESC</a></th><th><a href='index.php?col=2&order_by=1'>Title ASC</a>|<a href='index.php?col=2&order_by=2'>Title ID DESC</a></th>";
#foreach($data as $row)
{
echo "<tr>";
echo "<td>".$row['bookID']."</td>";
echo "<td>".$row['title']."</td>";
echo "</tr>";
}
echo "</table>";
第二個劇本
//Retrieve all books
$order_by = 'ASC';
switch ( (int)$_GET['order_by'] ) {
case 1:
$order_by = 'ASC';
break;
case 2:
$order_by = 'DESC';
break;
}
$col= "bookID";
switch ( (int)$_GET['col'] ) {
case 1:
$col = 'bookID';
break;
case 2:
$col = 'title';
break;
}
$all_books_query = "SELECT b.bookID,b.title,b.description,b.quantity,b.price,c.name FROM Books b
INNER JOIN Book_Category bc ON bc.bookID = b.bookID
INNER JOIN Category c ON c.catID = bc.catID
GROUP BY b.bookID
ORDER BY $col $order_by";
$rows = $db->query($all_books_query)->fetchAll();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.