CI 묻고 답하기

제목 페이지 네이션 궁금한거
글쓴이 일성 작성시각 2014/08/13 15:45:12
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 13785   RSS
db에 있는 recipe 리는 테이블에 조건이 kind에 있는 숫자 1이 되어있는 것을 모두 가지고 왔어 
페이지네이션을 사용할려고합니다 
근대  controllers 에서 
public function  page() {
        $data['meat'] = $this->i_obj->get_list($this->uri->segment(3,0),12);
        $data['ite'] = $this->i_obj->get_lis(1);
        $data['gallery'] = $this->i_obj->gallery(1);    
        
        //CI에서 제공해주는 페이지 네이션 환경설정
        $config['total_rows'] = $this->i_obj->all_count(1);
        $config['per_page'] = 12; 
        $config['base_url'] = site_url('/meat/page');
        
        $config['full_tag_open'] = '<ul class="pagination">';
        $config['full_tag_close'] = '</ul>';        
 
        $config['num_tag_open'] = '<li>';
        $config['num_tag_close'] = '</li>';
 
        $config['cur_tag_open'] = '<li class="active"><a href="#">';
        $config['cur_tag_close'] = '</a></li>';
 
        $config['first_link'] = '처음';
        $config['first_tag_open'] = '<li> ';
        $config['first_tag_close'] = '</li>';
        
        $config['last_link'] = '끝';
        $config['last_tag_open'] = '<li> ';
        $config['last_tag_close'] = '</li>';
        
        $config['prev_link'] = '이전';
        $config['prev_tag_open'] = '<li>';
        $config['prev_tag_close'] = '</li>';
        
        $config['next_link'] = '다음';
        $config['next_tag_open'] = '<li>';
        $config['next_tag_close'] = '</li>';
 
        
        $this->pagination->initialize($config);
        $data['page'] = $this->pagination->create_links(); 
        
        $this->load->view('meat_view',$data);
 
 
    }
이런게 사용하고 models 에서는
function all_count($no) {
    
        //$this->db->where('kind', 1);
        //DB전체 값을 전부 받아온다
        //return $this->db->count_all('recipe'); 
        //원하는값을 전체 값을 받아 온다
        $query =  $this->db->query("SELECT * FROM `recipe` WHERE kind ={$no} ;");
    
        if($query){
            return $query->num_rows();
        }
        return 0;
    
    }
이런식으로 했는되 안되더라고요
페이지네이션을 작동하는되 db에 있는 recipe테이블에서 마지막부터 64개 만 가지고 오던라고요 뭐 어떻게하면 위에서 말한것 같이 된수있나요 
 다음글 body공백 (1)
 이전글 셋팅문제 조언 부탁드립니다. (1)

댓글

변종원(웅파) / 2014/08/13 18:57:07 / 추천 0
http://cikorea.net/lecture/view/428/page/1
몇일전에 포럼회원님이 올리신 페이지네이션에 관한 귀중한 동영상 자료입니다.
darkninja / 2014/08/13 19:17:28 / 추천 0
단편적인 코드조각만 올리셔서 님의 실력을 알수가 없습니다.
며칠전의 댓글을 단적이 있는데 그걸로 님의 실력을 판단하기도 그렇고
좀더 많은 코드를 올려 주신다면
그것을 기준으로 님이 이해 할 수 있는 답변이 달릴것입니다.

지금으로서는 답변 달기가 좀 거시기합니다!
ci 의 기본적인 페이지네이션의 형태는 아래와 같습니다.
그럼 화이팅요^^
class Meat extends CI_Controller {
 public function __construct() {
   parent::__construct();
        
   $this->load->library('pagination');
   $this->load->model('meat_model');
 }

 public function recipe_page( $no = "1", $page_index = 1 ) {
  $per_page = 12;

  $config = array();
  $config['total_rows'] = $this->meat_model->all_count( $no );
  $config['per_page'] = $per_page; 
  $config['base_url'] = site_url( '/meat/page/'.$no );  
  $config['uri_segment'] = 4; // $no 가 base_url 에 추가되었으므로 1증가...
  $this->pagination->initialize($config);

  $data = Array();
  $data['meat'] = $this->i_obj->get_list($this->uri->segment(4,0),12);
  $data['ite'] = $this->i_obj->get_lis( $no );
  $data['gallery'] = $this->i_obj->gallery( $no );    

  $data['pageLinks'] = $this->pagination->create_links(); 
  $data['recipe'] = $this->meat_model->all_paginated($page_index, $per_page, $no); 

  $this->load->view('meat_view', $data);
 }
 
} 

class Meat_model extends CI_Model {

 public function all_count($no=1) {
  //$query = $this->db->query("SELECT * FROM `recipe` WHERE kind ={$no} ;");
  $this->db->select('count(*) as Cnt');
  $this->db->where('kind', $no);

  $query = $this->db->get('recipe');
  if ($query->num_rows() <= 0) {
   return 0;
  }
  return $query->row()->Cnt;
 }

 public function all_paginated($page_index=1, $per_page=10, $no=1) {
  $this->db->select('*');
  $this->db->where('kind', $no);
  $this->db->limit($per_page, ($page_index - 1) * $per_page);

  $query = $this->db->get('recipe');
  return $query->result();
 }

}