2016-07-10 3 views
1

У меня есть часть курсовой работы для создания php-сайта с использованием mysql.
Мне нужно иметь возможность сортировать таблицу данных на основе ее столбцов. Данные извлекаются из базы данных mysql с использованием PDO. Затем я просто эхо-таблицу перебираю по каждой строке данныхPHP/MYSQL Сортировка таблицы эха данных mysql

Любые идеи относительно того, как я могу сортировать данные по столбцам? Желательно, чтобы я мог сортировать данные (по возрастанию), щелкая по заголовкам таблицы. Но я открыт для идей.

код ниже: 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 в остальной части страницы. Не уверен, что еще мне нужно включить в это, чтобы лучше понять проблему, но любые идеи помогут.

ответ

1

Настроить механизм отправки запросов на сортировку пользователя на сервер (запрос param? Post?) И использовать эти требования для установки предложения ORDER BY в запросе MySQL.

1

Вот простой, non_robust реализация

Вы должны сделать некоторые активные ссылки, с Params, как это:

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

И второй poart сценария

//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(); 
Смежные вопросы