【问题标题】:Anyone did php codeigniter pagination with sorting?有人用排序进行 php codeigniter 分页吗?
【发布时间】:2016-03-07 14:36:31
【问题描述】:

我正在使用 php codeigniter。我使用了分页,但如何像 Datatable 分页一样对字段数据进行排序。请帮帮我

【问题讨论】:

标签: php codeigniter pagination


【解决方案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>

并将参数应用到您的控制器函数 view() 中,

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);

希望在上面申请后这会起作用..

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      在视图之间,标签形式:

      <!--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; ?>">
      

      如果你把这段代码放在你的 head table 中:

       <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);
      

      有什么疑问吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多