Php 对包含SQL数据的HTML表列进行排序

Php 对包含SQL数据的HTML表列进行排序,php,html,mysql,Php,Html,Mysql,我正在创建一个简单的事务报告页面,它获取输入的数据库数据并将其显示在HTML表中。我希望在单击表头时能够按asc/desc顺序对客户端上的每个列进行排序,但我无法使我的函数正常工作 <?php session_start(); include 'db.php'; include 'head.php'; $sql = "SELECT * FROM ach"; $result = $mysqli->query($sql); echo "<div class='w3-ro

我正在创建一个简单的事务报告页面,它获取输入的数据库数据并将其显示在HTML表中。我希望在单击表头时能够按asc/desc顺序对客户端上的每个列进行排序,但我无法使我的函数正常工作

<?php session_start();

include 'db.php';
include 'head.php';

$sql = "SELECT * FROM ach";


$result = $mysqli->query($sql);


echo "<div class='w3-row-padding w3-margin'>";
if ($result->num_rows) {
    echo "<table class='w3-table-all'>
    <thead>
        <tr>
            <th><a href='transactions.php?sort=submittedDate'>Submitted Date</a></th>
            <th><a href='transactions.php?sort=accountNumber'>Chief Account Number</a></th>
            <th><a href='transactions.php?sort=accountHolderName'>Account Holder</a></th>
            <th><a href='transactions.php?sort=achAccountType'>Account Type</a></th>
            <th><a href='transactions.php?sort=transferType'>Transfer Type</a></th>
            <th><a href='transactions.php?sort=recurringMonthlyTransferDate'>Transfer Date</a></th>
            <th><a href='transactions.php?sort=status'>Status</a></th>
            <th>&nbsp;</th>
        </tr>
    </thead>";

    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "<tbody><tr><td>".$row["submitDate"]."</td><td>".$row["accountNumber"]."</td><td>".$row["accountHolderName"]."</td><td>".$row["achAccountType"]."</td><td>".$row["transferType"]."</td><td>".$row["recurringMonthlyTransferDate"]."</td><td>".$row["status"]."</td><td><a href=review.php?ID=" . $row["id"] . ">Review</a></td></tr></tbody>";
    }

    echo "</table>";
} else {
    echo "0 results";
}
echo "</div>";

if ($_GET['sort'] == 'submittedDate')
{
    $sql .= " ORDER BY `ach`.`submitDate` ASC ";
}
elseif ($_GET['sort'] == 'accountNumber')
{
    $sql .= " ORDER BY accountNumber";
}
elseif ($_GET['sort'] == 'accountHolderName ')
{
    $sql .= " ORDER BY accountHolderName ASC";
}
elseif($_GET['sort'] == 'achAccountType')
{
    $sql .= " ORDER BY achAccountType";
}
elseif($_GET['sort'] == 'transferType')
{
    $sql .= " ORDER BY transferType";
}
elseif($_GET['sort'] == 'recurringMonthlyTransferDate')
{
    $sql .= " ORDER BY recurringMonthlyTransferDate";
}
elseif($_GET['sort'] == 'status')
{
    $sql .= " ORDER BY status";
}

$mysqli->close();

include 'foot.php';
?>

执行查询之前,必须添加排序语句。在此行执行查询:

$result = $mysqli->query($sql);

在执行查询之前,必须添加排序语句。在此行执行查询:

$result = $mysqli->query($sql);

如果要在服务器端对数据进行排序,必须使用oorderby子句。如果希望jquery在客户端进行排序,可以使用

同时将
放在while之外。您的表有许多
tbody
标记,因为有许多行

   $sort = "";
    if(isset($_GET["sort"])) {
        $sort = $_GET["sort"];
        //validate that it is real column name so that you will not get any error
        if(!in_array($sort, array("submittedDate", "accountNumber", "accountHolderName", "achAccountType", "transferType", "recurringMonthlyTransferDate", "status"))) {
            $sort = "";
        }
        if($sort !="") {
            $sort = " order by ".$sort." ASC";
        }
    }

    $sql = "SELECT * FROM ach".$sort;

如果要在服务器端对数据进行排序,必须使用oorderby子句。如果希望jquery在客户端进行排序,可以使用

同时将
放在while之外。您的表有许多
tbody
标记,因为有许多行

   $sort = "";
    if(isset($_GET["sort"])) {
        $sort = $_GET["sort"];
        //validate that it is real column name so that you will not get any error
        if(!in_array($sort, array("submittedDate", "accountNumber", "accountHolderName", "achAccountType", "transferType", "recurringMonthlyTransferDate", "status"))) {
            $sort = "";
        }
        if($sort !="") {
            $sort = " order by ".$sort." ASC";
        }
    }

    $sql = "SELECT * FROM ach".$sort;

我知道你需要自己做这件事。。但是请看一看哪一个可以帮助你。。Bootstrap datatable具有内置的排序、搜索、筛选等功能…但仅在客户端…如果要在客户端排序,可以使用data table。我尝试使用datatable,但它不起作用。请将其放置在外部。您的桌子上有尽可能多的桶体标签,谢谢!这就成功了我知道你需要自己做这件事。。但是请看一看哪一个可以帮助你。。Bootstrap datatable具有内置的排序、搜索、筛选等功能…但仅在客户端…如果要在客户端排序,可以使用data table。我尝试使用datatable,但它不起作用。请将其放置在外部。您的桌子上有尽可能多的桶体标签,谢谢!这就成功了