簡體   English   中英

PHP / MYSQL對MySQL數據的回顯表進行排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM