2017-07-19 18 views
1

入力したデータベースデータをHTMLテーブルに表示する簡単なトランザクションレポートページを作成しています。テーブルヘッダーをクリックしたときにクライアント側の各列を昇順/降順で並べ替えることができるようにしたいが、私の機能を動作させることができない。SQLデータを含むHTMLテーブル列をソート

<?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'; 
?> 
+0

私はあなたが自分でこれを実行する必要があることを理解..しかし、あなたを助けることができる[ブートストラップのDataTable](https://datatables.net/manual/styling/bootstrap)をご覧ください。..ブートストラップデータテーブルには、ソート、検索、フィルタリングなどのための組み込み関数がありますが、クライアント側でのみ使用できます。 – Lal

+0

クライアント側でソートする場合は、データテーブルを使用できます。 –

+0

データテーブルを使用しようとしましたが、動作しませんでした。 – xxdash

答えて

0

クエリを実行する前に、並べ替えステートメントを追加する必要があります。クエリは、このライン上で実行されます。

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

あなたが句によってRDER oを使用する必要がサーバ側でソートデータにしたい場合。あなたはjqueryのは、クライアント側でをソートしたい場合は、

Data tablesはまたしばらく外<tbody> </tbody>を入れて使用することができます。テーブルには多くの行があるので、多くの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; 
関連する問題