首页 > 解决方案 > 如何按 ASC 或 DESC 日期对表格进行排序?

问题描述

    <?php $session=$this->session->userdata['id'];
    ?>
        <?php
          foreach ($results as $r) {
            $InitDt = date(('d/m/Y'),strtotime($r->InitDt));
            $EndDt = date(('d/m/Y'),strtotime($r->EndDt));
            if($session=='1'){
            echo '<tr>';
            echo '<td>'.$r->idOs.'</td>';
            echo '<td>'.$r->ClientName.'</td>';
            echo '<td>'.$InitDt.'</td>';
            echo '<td>'.$EndDt.'</td>';
            echo '<td>'.$r->status.'</td>';
            echo  '</td>';
            echo '</tr>';
        }
        else
        {   
            if($session==$r->userId){
            echo '<tr>';
            echo '<td>'.$r->idOs.'</td>';
            echo '<td>'.$r->ClientName.'</td>';
            echo '<td>'.$InitDt.'</td>';
            echo '<td>'.$EndDt.'</td>';
            echo '<td>'.$r->status.'</td>';
            echo '<td>';
            echo '</td>';
            echo '</tr>';
        }
        }
        }
        ?>

此代码是在 codeigniter 视图文件夹中构建表的调用。其他代码控制对数据库的查询。这段代码没有错误。问题仅在于是否可以在 PHP 中进行排序(以及如何进行排序)或者我是否应该使用 java 脚本或类似的。

上面的代码结果示例

标签: phpmysqlcodeigniter

解决方案


在这里,您可以通过两种方式对数据进行排序。

  1. 您可以使用过滤器选项(例如 ajax 调用)对日期进行排序,并根据您的要求原因应用 php 查询,并以 json 格式获取响应并再次重新绘制表数据。
  2. 否则,您可以使用引导数据表并在日期列上应用排序功能。

数据表的链接在这里:https ://datatables.net/examples/styling/bootstrap4

在数据表中,默认情况下对所有列应用排序。删除默认排序并对特定列应用排序,如下所示

var table;
jQuery(document).ready(function () { 
    table = jQuery('#cstm_people_range_list').DataTable({
            "order": [[0,"asc"]],
            "columnDefs": [{ "orderable": false, "targets": "_all" } ]
    });
});

输出在这里。您可以看到排序功能仅适用于第一列。

在此处输入图像描述


推荐阅读