Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/MYSQL对MYSQL数据的回显表进行排序_Php_Mysql_Sorting_Pdo - Fatal编程技术网

PHP/MYSQL对MYSQL数据的回显表进行排序

PHP/MYSQL对MYSQL数据的回显表进行排序,php,mysql,sorting,pdo,Php,Mysql,Sorting,Pdo,我有一个使用mysql构建php站点的课程作业。我需要能够根据数据表的列对其进行排序。使用PDO从mysql数据库检索数据。然后,我只是在循环遍历每一行数据时回显一个表 关于如何按列对数据进行排序,有什么想法吗?我希望能够通过单击表标题对数据进行排序(升序)。但我对想法持开放态度 代码如下: PHP: 我在页面的其余部分有更多的PHP。我不确定我还需要包括哪些内容才能更好地理解这个问题,但任何想法都会有所帮助。设置一种机制,将用户的排序要求发送回服务器(query param?post?),并使

我有一个使用mysql构建php站点的课程作业。
我需要能够根据数据表的列对其进行排序。使用PDO从mysql数据库检索数据。然后,我只是在循环遍历每一行数据时回显一个表

关于如何按列对数据进行排序,有什么想法吗?我希望能够通过单击表标题对数据进行排序(升序)。但我对想法持开放态度

代码如下: PHP:


我在页面的其余部分有更多的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
    $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();
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();