有人做了php codeigniter分页排序吗?

时间:2015-12-03 05:03:16

标签: php codeigniter pagination

我在php codeigniter工作。我使用分页但是如何对像Datatable分页这样的字段数据进行排序。请帮帮我

3 个答案:

答案 0 :(得分:1)

在视图顶部添加以下代码

$page = (int)$this->uri->segment(3);
if($page==0) { $page=1; }
$order_seg = $this->uri->segment(5,"asc"); 
$order= ($order_seg == "asc") ? "desc" :  "asc";

使用以下表格标题

<th><a href="<?php echo base_url().'test/view/'.$page.'/f_name/'.$order; ?>">First Name</a></th>

并将参数应用于控制器功能视图(),如

function view($page=1,$sort='f_name',$order='desc'){}

并将其传递给您的模型,如

$data['result']=$this->test_Model->view((($page-1)*$config['per_page']),$config['per_page'],$sort,$order);

希望在上面申请之后这会有用。

答案 1 :(得分:0)

尝试在查询中使用ASC或DESC order子句。您的数据将被排序。

答案 2 :(得分:0)

在视图中,标记形式之间:

<!--Código para capturar la ordenación-->
  <input type="hidden" id="orderby" name="orderby" value="<?php if (isset($orderby)) echo $orderby; ?>">
  <input type="hidden" id="tipoOrderby" name="tipoOrderby" value="<?php if (isset($tipoOrderby)) echo $tipoOrderby; ?>">

如果你把这段代码放在你的头表中:

 <thead>
              <tr>
                <th> Column 1 <a  href="#" data-type="order" data-field="column1"><i class="fa fa-sort"></i></a></th>
                <th> Column 2 <a href="#" data-type="order" data-field='column2'><i class="fa fa-sort"></i></a></th>
              </tr>
            </thead>

在jquery(file.js)中,(可以由你改进):

// Código para controlar la ordenación de la tablas
      $(document).find('a[data-type="order"]').each(function () {
        if ($(this).data("field") == document.form1.orderby.value) {
          if (document.form1.tipoOrderby.value == "ASC") {
            $(this).data("order", "DESC");
            $("i", this).addClass('fa-sort-desc');
          } else {
            $("i", this).addClass('fa-sort-asc');
            $(this).data("order", "ASC");
          }
        } else {
          $("i", this).addClass('fa-sort');
          $(this).data("order", "ASC");
        }
        $(this).click(function (event) {
          event.preventDefault();
          document.form1.orderby.value = $(this).data("field");
          document.form1.tipoOrderby.value = $(this).data("order");
          document.form1.submit();
        });
      });

在Codeigniter控制器中:

   if($form_data['orderby'] == ""){ //Default sort
      $orderby = "name";
      $tipoOrderby = 'ASC';
    }
    else{
      $orderby = $this->input->post('orderby');
      $tipoOrderby = $this->input->post('tipoOrderby');
    }
  //Returns values view
  $data['orderby'] = $orderby;
  $data['tipoOrderby'] = $tipoOrderby;

最后,您应该在查询模型中包含此内容=)

$query = $this->model->get($pages, $this->uri->segment($config['uri_segment']), $where, $orderby, $tipoOrderby);

有疑问吗?