2011-01-28 8 views
1

私はdbからすべての値を持ってきて、それらをページに示しました。今、私が列をクリックすると、昇順または降順に並べ替える必要があります。PHPを使ってソートする

どうすればよいですか?

+0

データセットは1ページに収まるか、またはページが変更されますか?もしそうなら、あなたは全体のデータセットまたは1ページだけをソートしたいですか? –

+0

http://stackoverflow.com/search?q=sort+column+phpにアクセスしてください。その後、問題がまだ残っていることを指摘してください。 – Gordon

+0

重複している可能性があります[クリックすると列ヘッダーで並べ替えることができますし、もう一度クリックすると逆順でソートするにはどうすればいいですか?](http://stackoverflow.com/questions/967535/how-can-i-sort-by-クリック時にクリックしたときに並び順を並べ替えるとき) – Gordon

答えて

0

JavaScriptを使用します。私はsorttableを提案する。

+0

JSは非常に限られたもので、1ページ分のデータセットの場合にのみ –

+0

@Col。 「1ページ」とはどういう意味ですか?それは追跡するために非常に多くの 'tr'の要素があるだろう、JavaScriptは大きなデータセットでは実現できません。 – sdleihssirhc

+0

平均は、Stackoverflowのようなものです。質問のあるページが多数あり、ブラウザがそれらをすべて保持することはできません。つまり、お互いのページに対して、サーバーに対する別のリクエストが行われます。 **すべての**質問を別の方向に並べ替えるには、サーバーにも別のリクエストが必要です。 –

4

これをPHPでのみ行う場合は、URLのクエリ文字列にパラメータを追加する必要があります。その列のアンカータグになり

www.example.com/table.php?col=mycolumn&sort=desc

、その後、table.phpにあなたはソート処理するためのロジックを持っているでしょう。

+1

SQLインジェクションを避けるためにこれらの値を直接クエリに入れないことを忘れないでください。 –

+0

これをアンカータグで購入しました。どのようにそれらをクエリ文字列で渡す – fddsf

+0

ここで@fddsf私は例を投稿しました:http://stackoverflow.com/questions/2993027/in-php-when-submitting-strings-to-the-db-should-i-take- #2995163#2995163フィールド名だけが記述されていますが、方向はコードがすべて同じであることを意味します。 –

-3

要求:www.example.com/table.php?col=mycolumn &ソート= DESC roflwaffleのポストに拡大

//may be some check , about the column is in the table field 
//sort is in the set of (asc , desc) 

$q = "select * from mytable where mycond order by addslashes($_GET['mycolumn']) addslashes($_GET['sort'])"; 
+0

addslashesを使用しないでください。準備済みの文を使用してください。 –

+0

@Logan Bailey LOL!質問を理解してもよろしいですか? –

0

、クエリ文字列VARSを使用したいと思うでしょう。これらから、クエリに追加する文字列を作成します。

$querySort = array(); 
if (isset($_GET['colName'])) { 
    $s = $_GET['colName']; 
    $snext = ''; 
    switch ($s) { 
     case '':  $snext = 'desc'; break; 
     case 'desc': $snext = 'asc'; break; 
     case 'asc': $snext = ''; break; 
     default:  $snext = ''; 
    } 
    if (!empty ($snext)) { 
     $querySort[] = "colName $snext"; 
    } 
    $colName_link = "colName=$snext"; 
    $colName_text = $snext; 
} 

// Further column checks 

if (count($querySort) == 0) { 
    // Default sort if no sort is given. 
    $querySort[] = "colName asc"; 
} 

$sort = implode (', ', $querySort); 

$query = mysql_query ("SELECT * FROM table ORDER BY $sort"); 

は、したがって、次のクエリ文字列与えられ、

www.example.com/table.php?colName=desc 

クエリは、この

SELECT * FROM table ORDER BY colName desc LIMIT 0, 15 

ようになり、カテゴリのリンクは、この

echo "<a href='?$colName_link'>Column Name</a> <small>$colName_text</small>"; 
+0

@Gutter ball.iは、列ヘッダーをクリックしてasceまたはdescenを実行する必要があります。 – fddsf

+0

@fddsf列ヘッダーをハイパーリンクにします。 –

+0

@Gutter ball:私はそれを行っていますが、リンクを通過するためにどのようなPHPコードです。 – fddsf

0

ようになります。これを行う最善の方法はjavaを使用することですスクリプト(ページを更新する必要はありません)。 Yahoo!のYUI3は非常に素敵なデータ可能なコンポーネントを持っています。あなたのPHPページで完全なデータセットが得られたら私はあなたの質問から補うことはできませんが、私はこれを前提とします。開始するにはYUI3's Column Sortingページをご覧ください。

+1

うわー! 1ページに収まるような短い*ユーザーリストがありますか?私のお悔やみ;) –

+0

笑さて、これほど良い例ではないかもしれない:P。私はすべてのクエリを削除する必要がありますと思う;) – Alfred

0

THISリンクをご覧ください。例HEREを確認してください。私は同じ目的のために私のプロジェクトの1つでそれを使用し、それもあなたを助けることを願っています。

関連する問題