在codeigniter

时间:2016-07-30 12:21:41

标签: php mysql codeigniter sorting

我创建了一个表,该表使用给定的Limit和Offset从数据库中获取并显示记录。现在我在点击表格的任何字段的标题时尝试在表格中应用排序(desc / asc)。我的目的是只对我得到的限制和偏移量的结果进行排序,而是对整个表进行排序,并用新的结果替换以前的结果。

控制器

public function dummy(){
    $field = "";
    $sort = "";
    $limit= 2;
    $id= 5;
    $field = $this->uri->segment(3);
    $sort = $this->uri->segment(4);
    $data['users'] = $this->admin_model->sortData($field,$sort,$limit,$id);
    $this->load->view('admin/dummy',$data);
}

模型

public function sortData($field,$sort,$limit,$id){
        $this->db->limit($limit,$id);
        $this->db->order_by($field,$sort);
        $query = $this->db->get('employee');
        return $query->result();
        }

以下是我在排序之前得到的记录示例

Firstname|Lastname|BirthDay |Email     |Mobile
Wendy    |moore   |28/7/1990|abc@a.com |xxx
Brad     |hoff    |14/3/1985|xyz@.com  |zzz

基于名字排序后我想要的结果是

Firstname|Lastname|BirthDay |Email     |Mobile
Brad     |hoff    |14/3/1985|xyz@.com  |zzz
Wendy    |moore   |28/7/1990|abc@a.com |xxx

我现在得到的结果是

Firstname|Lastname|BirthDay |Email     |Mobile
Anna     |Fox     |1/8/1995 |xyz@.com  |zzz
Berry    |Alan    |9/10/1992|abc@a.com |xxx

看到它正在对整个表进行排序,并根据以前的偏移量替换结果。

我的排序网址

            <?php if($this->uri->segment(5)!= 'desc'){ ?>
     <a href="<?php echo site_url('admin/dashboard/'.$geturl.'/firstName/desc');?>">
<?php } else
        { ?>
    <a href="<?php echo site_url('admin/dashboard/'.$geturl.'/firstName/asc');?>">
    <?php } ?> FirstName</a>

1 个答案:

答案 0 :(得分:1)

$this->db->select('*');
$this->db->from('employee');
$this->db->order_by($field,$sort);
$this->db->limit($limit,$id);
$query=$this->db->get();

<强> FYI

  1. $sort DESC ASC
  2. limit中,您设置了2个值。它充当LIMITOFFSET
  3. <强>链接

    1. order_by() in codeigniter.com
    2. limit() in codeigniter.com