개발 Q&A

제목 게시판을 만들고 있는데 페이지에서 뒤에값이 중복돼서 셀렉트가 되는 이유를 알고싶습니다.
카테고리 PHP
글쓴이 코린이 작성시각 2018/01/12 14:18:12
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 309   RSS

제가 mysql의 데이터를 불러와서 셀레트해서 게시판을 만들고 있습니다. 그런데 페이지네이션을 하는데

앞의값이 중복되어서 뒤에다시나옵니다. 예를 들면 1번페이지에서 60번~50번까지의 데이터가 보여진다고하면

2번페이지에서는 58번~48번까지의 데이터가 보여지는식으로 계속 나옵니다. 도대체 어디가 문제인지 모르겠습니다.

제발 알려주시면 감사하겠습니다. 밑의소스는 컨트롤러의 인덱스펑션입니다.

public function index() 

{

        $pname=$this->input->get('pname', TRUE); //상품명

         

        $data['s_pname']=$pname; /////////////////////////////////검색

$_GET['pname'] = $pname; /////////////////////////////////검색

 

$this->load->library('pagination');

$config['first_url'] = site_url() . '/board/index/page/1?'.http_build_query($_GET);

$config['base_url']=site_url() . '/board/index/page';

$config['total_rows']=$this->board_model->lists('num_rows', '', '',  $pname);/////////////////////////////////검색

$config['per_page'] = 10;

        $config['num_links'] = 5;

$config['use_page_numbers'] = TRUE;

$config['suffix'] = '?'.http_build_query($_GET,'',"&");

$this->pagination->initialize($config);

$data['pagination']=$this->pagination->create_links();

$data['num_rows']=$config['total_rows'];

 

$page = $this->uri->segment(4, 1);

if ($page > 1) {

$offset=(($page / $config['per_page'])) * $config['per_page'];

} else {

$offset=($page - 1) * $config['per_page'];

}

        $data['list']=$this->board_model->lists('', $offset, $config['per_page'], $pname);/////////////////////////////////검색

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

    }

 다음글 api 호출 분산 처리 (2)
 이전글 파일업로드 관련하여 문의드립니다. (4)

댓글

배강민 / 2018/01/12 14:33:58 / 추천 0
per_page = 10
 
1p의 offset : 0 (0~9)
2p의 offset : 10 (10~19)
3p의 offset : 20 (20~29)
 
이 되어야하는데, 코린이님의 로직에 따르면 2페이지부터 아래와 같이 됩니다.
 
1p의 offset : 0 (0~9)
2p의 offset : 2 (2~11)
3p의 offset : 3 (3~12)
 
offset 계산을 그냥 $offset=($page - 1) * $config['per_page']; 이거만 사용하시면 됩니다.
코린이 / 2018/01/12 14:37:20 / 추천 0

배강민님 정말 감사드립니다. 제가 소스코드로 받아서 고쳐쓰고있는거라서 제대로 모르고있었는데 정말 그거만 쓰니까 바로되네요

어디 나와있는곳도 없고해서 답답했는데 정말 감사합니다^^