3

HTML テーブル内に表示されるデータを並べ替えるための、より効率的エレガント安全な方法を探しています。これは私がこれまでに思いついたもので、やや肥大化/野蛮に見えます。

$_SESSIONまた、現在選択されている順序を URL 内で「手動で」次のページに持ち越す必要がないように、並べ替えを に保存するようなことも考えました。おそらく、JavaScript+PHP の「安全でシンプルな」部分 (ただし、フレームワークは使用しないでください) が理にかなっているでしょうか? 私の考えは今何時間もぐるぐる回っています。

<?php
$ro_arr = array(
    "kid" => "kid",
    "kwd" => "Keyword",
    "cpc" => "ApproximateCPC",
    "cmp" => "Competition",
    "mov" => "MonthlyValue",
    "gms" => "GlobalMonthlySearches",
    "lms" => "LocalMonthlySearches",
    "dfc" => "KeywordDifficulty",
    "com" => "com",
    "net" => "net",
    "org" => "org",
    );

if (!empty($_GET['ro']) && strlen($_GET['ro']) == 7 && array_key_exists($col = substr($_GET['ro'], 0, 3), $ro_arr)) {
    $dir = (substr($_GET['ro'], 4, 3) == 'asc' ? "ASC" : "DESC");
    $res_order = $res_arr[''. $col .''] ." ". $dir;

} else {
    $_GET['ro'] = "kid_asc";
    $res_order = "kid ASC";
}
?>

<!-- just for testing -->
<pre><?php echo $res_order; ?></pre>
<!-- done testing -->

<table>
  <tr>
    <td><a href="sort.v1.php?ro=<?php echo ($_GET['ro']=='kwd_asc')?"kwd_dsc":"kwd_asc"; ?>">Keyword</a></td>
    <td><a href="sort.v1.php?ro=<?php echo ($_GET['ro']=='cmp_dsc')?"cmp_asc":"cmp_dsc"; ?>">Comp.</a></td>
    <td><a href="sort.v1.php?ro=<?php echo ($_GET['ro']=='cpc_dsc')?"cpc_asc":"cpc_dsc"; ?>">Ad CPC</a></td>
    <td><a href="sort.v1.php?ro=<?php echo ($_GET['ro']=='mov_dsc')?"mov_asc":"mov_dsc"; ?>">Value</a></td>
    <td><a href="sort.v1.php?ro=<?php echo ($_GET['ro']=='gms_dsc')?"gms_asc":"gms_dsc"; ?>">Global Searches</a></td>
    <td><a href="sort.v1.php?ro=<?php echo ($_GET['ro']=='lms_dsc')?"lms_asc":"lms_dsc"; ?>">Local Searches</a></td>
    <td><a href="sort.v1.php?ro=<?php echo ($_GET['ro']=='dfc_asc')?"dfc_dsc":"dfc_asc"; ?>">Difficulty</a></td>
    <td width="22"><a href="sort.v1.php?ro=<?php echo ($_GET['ro']=='com_dsc')?"com_asc":"com_dsc"; ?>">com</a></td>
    <td width="22"><a href="sort.v1.php?ro=<?php echo ($_GET['ro']=='net_dsc')?"net_asc":"net_dsc"; ?>">net</a></td>
    <td width="22"><a href="sort.v1.php?ro=<?php echo ($_GET['ro']=='org_dsc')?"org_asc":"org_dsc"; ?>">org</a></td>
  </tr>
</table>
4

2 に答える 2

1

1 つではなく 2 つのパラメーターを使用すると、コードの量をほぼ半分に減らすことができます。

  1. 並べ替えに使用するパラメーター: kid、com、net、org...
  2. 順序: asc、dsc
于 2013-06-17T03:00:30.797 に答える
0

テーブルが大きすぎず、 jQueryの使用に不利でない場合は、 tablsorterを使用してください。数千行に達すると、クライアント側の並べ替えが少し扱いに​​くくなる可能性があります。

于 2013-06-17T02:58:15.387 に答える