CI 묻고 답하기

제목 페이지네이션 다시 질문 있습니다.
글쓴이 과학나라 작성시각 2013/09/11 17:32:21
댓글 : 7 추천 : 0 스크랩 : 0 조회수 : 16959   RSS
 우선 답편 감사합니다.

공개 소스를 봐도 이해가 안되서 이렇게 글을 남깁니다.

리미트를 걸어주라고 말씀해주셨는데..

=======================================================================
 
 $this->load->model('simplebbsmodel');
 $limit = 10;
 
 
 $this->load->library('pagination');
 
    $config['base_url'] = 'http://devtest.domain21.org/welcome/bbslist';
    $config['total_rows'] = 21; 
    $config['per_page'] = $limit; 
    $config['num_links'] = 10;
    
    $this->pagination->initialize($config); 
    
$data['paging'] = $this->pagination->create_links(); 
  
// 모델 - 쿼리
 $data['result'] = $this->simplebbsmodel->get_list($config);  //리스트 가져오기  
  
 $this->load->view('welcome_message',$data);

=
======================================================

이렇게 하면되는 건가요

model부분

=====================================================
 
    function get_list($config)
    {
       $query = $this->db->get('board');
       
        return $query->result(); 
    }==================================

세그먼트로 해서 리미트 하시라는 말씀인데 어떻게 해야할지..

일단 페이지 자체는 나오는데.

문제는 한페이지당 10개의 글을 원하는데 전체 글이 뜹니다.

2페이지 가도  3페이지 가도 어떻게 해야할지 모르겠습니다.

부탁드립니다. 어떻게 해야하죠.
 다음글 CSRF / AJAX / IE (2)
 이전글 windows 2012, IIS 8.0 php 5.5.... (2)

댓글

수야디벨 / 2013/09/11 17:42:25 / 추천 0
모든 해답은 http://cikorea.net/user_guide_2.1.0/libraries/pagination.html 메뉴얼에 있습니다만 ..
데이터 베이스 액티브 레코드 메뉴얼 http://cikorea.net/user_guide_2.1.0/database/active_record.html 에 보시면
$query = $this->db->get('board'); 이게 어떤 기능을 한다고 나와 있나요? 
DB의 전체 값을 가져온다고 되어 있나요~ 아니면 LIMIT해서 가져온다고 되어있나요?
우선 확인부터 해보세요 
과학나라 / 2013/09/11 18:01:40 / 추천 0
 감사합니다 ㅠ,ㅠ  이것였군요 ㅠ,ㅠ 원하는 게시글만큼 나옵니다 ㅠ,ㅠ 

문제는 2페이지 넘어가면 1페이지랑 똑같은 게시글이 나오네요. 

이럴한 경우 아까도 말씀하시다싶이 세그먼트를 안줘서 그런가요?
수야디벨 / 2013/09/11 19:03:47 / 추천 0
지금 설정을  $limit = 10; 이라고 해 놓으셨는데,

저렇게 limit가 10으로 고정되어 있으면 항상 같은 게시물이 나와요.

페이지 네비게이션을 달아 놓으셨다면 2페이지를 클릭하면 URL형식의 맨 마지막에 
$config['per_page'] = $limit;  의 수만큼. 즉 위 소스 기준으로 $limit가 10이니까 ,

URL형식의 맨 마지막이 /10   이런식으로 붙을꺼에요. 2페이지는 /10  3페이지는 /20 4페이지는 /30
각 페이지마다 다르게 붙는 저 숫자를 이용해서 DB에 LIMIT를 걸어 가져와야 합니다.

좀 더 자세한 설명은 uri 메뉴얼을 참고하세요.
http://cikorea.net/user_guide_2.1.0/libraries/uri.html


과학나라 / 2013/09/11 19:07:34 / 추천 0

 $page = 2;
   // 모델 - 호출
   $this->load->model('simplebbsmodel');
   
  
   
   
   $this->load->library('pagination');

    $config['base_url'] = 'http://devtest.domain21.org/welcome/bbslist';
    $config['total_rows'] = 21; 
    $config['per_page'] = 10; 
    $config['num_links'] = 10;
    
    
 
    $offset = ($page - 1) * $config['per_page'];
    
    $this->pagination->initialize($config); 
    
  
  $data['paging'] = $this->pagination->create_links(); 
    
  // 모델 - 쿼리
   $data['result'] = $this->simplebbsmodel->get_list($config,$offset);  
과학나라 / 2013/09/11 19:08:06 / 추천 0

    function get_list($config,$offset)
    {
       $query = $this->db->get('board',10,$offset);
       
        return $query->result(); 
    }

과학나라 / 2013/09/11 19:09:42 / 추천 0
 네 일단 말씀하신것처럼 config['per_page'] 10이면 page숫자에 따라 페이지 보여지게 하는건데요

문제는 page가 그에 맞게 숫자를 불려와줘야 하는데 안되네요 ㅠ,ㅠ

0~10까지가  1page나오게 하고   11~20까지가 2page나오게 하고..  
/ 2013/09/11 23:36:46 / 추천 0
 $page = 2 로 픽스해두셨는데 
 
이건 2페이지가 제대로 나오기 위해서 테스트를 위해 작성해두신 것 인가요?
 
 
last_query나 프로파일링 옵션을 켜신 이후에
 
원하시는 쿼리라 정상적으로 수행이 된 것인지 확인해보시는게 좋을 것 같습니다.
 
 
 
 
 
 
 
그리고 위 소스중에서는 2군데 정도 수정을 해주셔야 할 것 같은데
 
$data['result'] = $this->simplebbsmodel->get_list($config,$offset);
 
 
는 
 
$data['result'] = $this->simplebbsmodel->get_list($config['per_page'],$offset);
 
 
 
 function get_list($config,$offset)
{
 
    $query = $this->db->get('board',10,$offset);
   
    return $query->result(); 
 
}
 
 
 
 
function get_list($limit,$offset)
{
 
    $query = $this->db->get('board',$limit,$offset);
   
    return $query->result(); 
 
}
 
 
 
이런식으로 작성해주시는게 나중에 페이지당 보여질 갯수를 지정할때
 
설정값에 따라 유동적으로 바뀌게 됩니다.