如何在PHP中对html表列进行排序?

时间:2010-09-30 23:16:19

标签: php sorting

我有一个仅使用文本文件填充的html表,基本上主要按时间戳排序。 我想选择通过名为“Server”的列($ keys)对表数据进行排序,这样我就可以根据服务器名称查看排序数据。由于这不是使用mysql,我不能使用'order by',有没有办法做到这一点?你是如何在PHP中做到这一点的?

以下是我的一些代码,展示了我的表格是如何创建的:

$keys = array('Server', 'Target','Set','Time', 'Length','Size','Status');
echo '<table id="stats_1"><tr>';
foreach ($keys as $column)
   echo '<th>' . $column . '</th>';
    echo '</tr>';

$counter=0;
foreach ($data as $row){
  $counter ++;
    $class = $counter % 2 === 0 ? 'alt1' : 'alt2';
    echo '<tr class="' . $class . '">';
     foreach ($keys as $column){
        if (isset($row[$column])){
          echo '<td>' . $row[$column] . '</td>';
        } elseif ($column == 'Status') {
          echo '<td> Check Logs </td>';
        } elseif ($column == 'Length') {
          echo '<td> n/a </td>';
        } elseif ($column == 'Size') {
          echo '<td> n/a </td>';
        } else {
          echo '<td> </td>';
        }
     }
}
echo '</table>';

2 个答案:

答案 0 :(得分:0)

如果你对jQuery没问题,可以考虑使用datagrids。 Flexigriddemo)和jqGriddemo)是两个非常好的插件。我建议使用jqGrid。文档非常好,易于定制。

答案 1 :(得分:0)

如果你想在PHP中进行操作,请查看usort,并让用户提供字段以使用GET变量进行排序。如果您在一个页面中拥有所有数据,则提供的JavaScript解决方案既可以降低服务器负载,又可以提高用户满意度。没理由你不能两者兼顾;)

一个例子是(不要复制/粘贴,只是为了这个目的的插图,虽然我确实建在更常见的安全防护装置):

class KeySorter {
   private $valids;
   private $key;
   function __construct($valids){
        $this->valids = $valids;
        $this->key = reset($this->valids);
   }
   function setKey($key){
       if(in_array($key, $this->valids)) $this->key = $key;
   }
   function compare($a,$b){
      return strcmp($a[$this->key],$b[$this->key]);
   }
   function getValids(){
       return $this->valids;
   }
}
$keys = array('Server', 'Target','Set','Time', 'Length','Size','Status');
$data = array(...your array....);
$sorter = new KeySorter($keys);
if(isset($_GET['sort'])){
     $sorter->setKey($_GET['sort']);
}
usort($data,array($sorter,'compare'));

echo '<table><thead><tr>';
foreach($sorter->getValids() as $sortkey){
     echo '<th><a href="'
       .htmlspecialchars(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), ENT_QUOTES)
       .'?sort='.urlencode($sortkey)
       .'">'.$sortkey.'</a></th>';
}
echo '</tr></thead>';