2011-01-13 25 views
0

データベースに2つの列を持つテーブルがあります。名前|年齢、私はそれをHTMLページに表示します。PHPとJavascript間の通信

ユーザーがクリックしたときにフィールドに基づいてHTMLページでテーブルを並べ替える必要があります。

フィールドに基づいてソートを行うPHP関数があります。

しかし、PHPでソート順で行を取得した後、ページから移動せずにHTMLテーブルを更新できる方法を探しています。

+0

AJAXはPHPとJavascriptのやりとり方法ですが、問題を保存したい場合は、テーブルをソートするためのJavascript関数があります。 PHPは必要ありません。 – Jake

+1

結果にページングを行う場合、別の 'order by'節で結果を再度照会する必要があります**したがって**必要な** ajaxです。あなたが一度にすべての結果を提示するならば、あなたはすでにあなたに話した人たちと同じようにjavascriptが必要です... – acm

答えて

1

サーバーと通信することなく、JavaScriptで並べ替えを行うことができます。例えば、このコードは、N番目のカラムの内容に基づいてテーブルをソートします:

function sortTable(table, column, skipHeader) { 
    // Stick each row into an array. 
    var rows = []; 
    for (var i = skipHeader ? 1 : 0; i < table.rows.length; i++) { 
    rows.push(table.rows[i]); 
    } 

    // Sort the array based on the innerText of the column'th cell in each row 
    rows.sort(function(a, b){ 
    a = a.cells[column].innerText; 
    b = b.cells[column].innerText; 
    return a < b ? -1 : (b < a ? 1 : 0); 
    }); 

    // Re-order the rows by removing/appending in the sort order 
    for (var i = 0; i < rows.length; i++) { 
    var row = rows[i]; 
    var container = row.parentElement; 
    container.removeChild(row); 
    container.appendChild(row); 
    } 
} 

例えば、最初の列に、ドキュメント内の最初のテーブルをソートし、ヘッダー行をスキップする:

sortTable(document.getElementsByTagName('table')[0], 0, true); 

明らかに、これは自分の好み、特にソートに合わせて変更することをお勧めしますが、データをサーバーに投稿するよりもずっと簡単です。提案していると思います。

4

これを行うには、クライアントとサーバーの間で通信する必要はありません。クライアント上のテーブルを直接並べ替えるだけです。

jQueryのプラグインで、このために非常にうまく機能があります:ここでは

http://tablesorter.com/docs/

1

は、あなたのテーブルは、PHPの代わりにJavaScriptを使用してソート可能にするJavaScriptライブラリへのリンクです。私は何度もそれを使用しました、それは素晴らしい動作します。他人以来

Javascript Sortable Tables by: Stuart Langridge

1

クライアント側のソートがここでうまく動作します、私はこの種のものをやって最も成功事例のを持っていたこれでリソースにあなたをちょうどポイントだろうという事実をカバーしています: Google Data Tables、その一部はVisualization Libraryです。 Here are the deetsあなたができること(スポイラー:あなたが望むものすべて)。

関連する問題