codeigniter实现get分页的方法


本文实例讲述了codeigniter实现get分页的方法 。分享给大家供大家参考 。具体实现方法如下:

public function project_search(){
  $this->load->library(pagination);
  $this->load->model(depart_mdl);
  //获取搜索需要的信息
  $data = $this->get_project_data();
  $get_data = $this->input->get();
  $data = array_merge($data,$get_data);
  //get分页配置
  $name = $get_data[name];
  $username = $get_data[username];
  $budget = $get_data[budget];
  $type = $get_data[type];
  $posttime_start = $get_data[posttime_start];
  $posttime_end = $get_data[posttime_end];
  $purchase_type = $get_data[purchase_type];
  $depart_code = $get_data[depart_code];
  $project_status = $get_data[project_status];
  $bidder_way = $get_data[bidder_way];
  $suffix = "?name=$name&username=$username&budget=$budget&type=$type&posttime_start=$posttime_start&posttime_end=$posttime_end&purchase_type=$purchase_type&depart_code=$depart_code&project_status=$project_status&bidder_way=$bidder_way";
  $config[base_url] = site_url(project/project_search).$suffix;
  $config[total_rows] = $this->db->count_all($this->db->dbprefix(project));
  $config[per_page] = 10;
  $config[page_query_string] = TRUE;
  //偏移量
  $config[query_string_segment] = page;
  $config[uri_segment] = 3;
  $this->pagination->initialize($config);
  $user = $this->user_mdl->get_user_by_salary_no($this->session->userdata(salary_no));
  $this->db->from(ustc_project);
  $this->db->join(ustc_admins,ustc_admins.salary_no=ustc_project.salary_no);
  if($user->role!=1){
    $depart_code = explode(,,$user->grant_depart_code);
    $this->db->where_in(grant_depart_code,$depart_code);
    $this->db->or_where(ustc_project.salary_no =,$this->session->userdata(salary_no));
  }
  if($name != ){
    $this->db->like(name,$name);
  }
  if($username != ){
    $this->db->like(username,$get_data[username]);
  }
  if($budget != ){
    $this->db->like(budget,$get_data[budget]);
  }
  if($type != ){
    $this->db->where(type,$get_data[type]);
  }
  if($depart_code != ){
    $this->db->where(depart_code,$get_data[depart_code]);
  }
  if($purchase_type != ){
    $this->db->where(purchase_type,$get_data[purchase_type]);
  }
  if($project_status != ){
    $this->db->where(project_status,$get_data[project_status]);
  }
  if($bidder_way != ){
    $this->db->where(bidder_way,$get_data[bidder_way]);
  }
  //时间
  if($posttime_start != ){
    $this->db->where(posttime > ,strtotime($get_data[posttime_start]));
  }
  if($posttime_end != ){
    $this->db->where(posttime < ,strtotime($get_data[posttime_end]));
  }
  if(isset($get_data[page])){
    $page_from = $get_data[page];
  }else{
    $page_from = 0;
  }
  $this->db->order_by(posttime,desc);
  $projects = $this->db->limit($config[per_page],$page_from)->get()->result_array();  
  //处理
  for($i=0;$i<count($projects);$i++){
    $projects[$i][type] = $this->manage_info_mdl->get_value_by_id($projects[$i][type])->value;
    $projects[$i][purchase_type] = $this->manage_info_mdl->get_value_by_id($projects[$i][purchase_type])->value;
    $projects[$i][depart] = $this->depart_mdl->get_depart_by_code($projects[$i][depart_code])->name;
  }
  $data[projects] = $projects;
  //获取当前用户的角色
  $data[user_role] = $this->user_mdl->get_user_by_salary_no($this->session->userdata(salary_no))->role;  
  $this->_template(project_search,$data);
}

希望本文所述对大家基于codeigniter的php程序设计有所帮助 。