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