CI 묻고 답하기

제목 [초보] 머리도 식힐겸 이거 함 보실래요? ㅋ
글쓴이 헛발이 작성시각 2009/11/25 11:12:29
댓글 : 8 추천 : 0 스크랩 : 0 조회수 : 27992   RSS
페이지 할때요...

10개씩

1페이지 누르면 limit 가 1 10 이 되고
2페이지 누르면 limit 가 10 10 이 되고
3페이지 누르면 limit 가 20 10 이 되고

이렇게 되는데요...이렇게 되다보니.. 1페이지에서 문제가 발생하네요..
limit 1 10 이렇게 되다 보니 가장 첫번째 데이터를 못 가져 오던데요...

이거 따로 처리 해 줘야 하는건가요?
아님 절묘한 루틴이 있는데 제가 모르는건가요?

^^;
 다음글 [초보] codeigniter 뭐가 좋아요? (9)
 이전글 [초보] 페이징 하는데요.. (2)

댓글

ci세상 / 2009/11/25 11:21:15 / 추천 0
세그먼트 넘길때 1페이지는 page/  혹은 page/1로 넘기면 될텐데요... 이것이 안되면

토탈카운터 부분에 검색조건 쿼리구문까지 다 넣어주셨는지요?

소스를 함 올려줘보세요^^
헛발이 / 2009/11/25 11:25:43 / 추천 0
콘트롤
function members()
{
	if (!$this->tank_auth->is_logged_in()) redirect('/auth/login/'); //Login Check

	$this->load->library('pagination');
	$this->load->model('biz_model');
    	
    $data['biz'] = $this->biz_model->getCategory();
    $data['tab_name'] = $this->uri->segment(1);

    if ($_POST) {
		$search_var = array();
		if ($_POST['findkey']) foreach($_POST as $key => $val) $search_var[] = "{$key}/{$val}";
		$search_url = implode("/",$search_var);
		$seg_url = explode("/",$search_url);
    } else {
		$seg_url = 	$this->uri->segment_array();
		if ($this->seg_value('findkey',$seg_url)) {
			if($this->seg_value('findword',$seg_url)) {
				$search_url = "findkey/".$this->seg_value('findkey',$seg_url)."/findword/".$this->seg_value('findword',$seg_url);
			} else {
				$search_url = "";
			}
        } else {
            $search_url = "";
        }            
    }

    $config['per_page'] = 10;
    $config['num_links'] = 5;
    $config['first_link'] = '最初';
    $config['last_link'] = '最後';
    $config['full_tag_open'] = '<p class="pager">';
    $config['full_tag_close'] = '</p>';

    if ($this->seg_value('findkey',$seg_url)) {
        $condition = $this->seg_value('findkey',$seg_url)."/".$this->seg_value('findword',$seg_url);
    } else {
        $condition = null;
    }

    $config['total_rows'] = $this->biz_model->findAll($condition, 'biz_'.$data['tab_name']);
    $config['base_url'] = SET_WEBROOT.'/'.$data['tab_name'].'/members/'.$search_url.'/page';
    $config['uri_segment'] =  $this->seg_index('page');
    $this->pagination->initialize($config);
    
    $data['page_account'] = $this->seg_value('page',$seg_url);
    $data['query'] = $this->biz_model->getList($data['page_account'], $config['per_page'], SET_TBL_NAME, $condition);

	$data['findkey'] = $this->seg_value('findkey',$seg_url);
	$data['findword'] = $this->seg_value('findword',$seg_url);

    $this->load->view('/biz/members_view', $data);
}

모델
function findAll($condition, $table)
{
    $arr = explode('/', $condition);
    $new_arr = array();
	foreach($arr as $key => $value) { 
		if($key % 2 != 0) 
			if($prev_value && $value) {
				$this->db->like("$prev_value", $value);
			}
			$prev_value = $value; 
	}
	$this->db->order_by("id", "desc"); 
	$query = $this->db->get("$table");
	return $query->num_rows(); 
}

function getList($page=null, $rp=null, $table, $condition=null)
{
	$arr = explode('/', $condition); 
	$new_arr = array();
	foreach($arr as $key => $value) {
	  if($key % 2 != 0) $this->db->like("$prev_value", $value);
	  $prev_value = $value;
	}
	
    $this->db->order_by("id", "desc");
    $query = $this->db->get($table,$rp,$page);
	return $query->result_array();
}
이렇게 햇는데요..
처음 접하는거라 소스가 엉망이니.. 참고 바람요...
헛발이 / 2009/11/25 11:34:59 / 추천 0
근데 page/로 넘길땐 page값이 없기 때문에.. limit값이 그냥 limit 10 만 들어가기 때문에
결국 limit 0 10의 결과가 되지만..

페이지의 값이 1이 있는 경우 page/1 일 경우에는 limit가 limit 1 10이 되기 때문에
첫번째 데이터를 못 가져오더라구요...
ci세상 / 2009/11/25 13:05:54 / 추천 0
급한대로 ^^ if($data['page_account'] == 1) $data['page_account'] = 0;
ci세상 / 2009/11/25 13:16:32 / 추천 0
ci 기본 페이지네이셔는 기본적으로 1페이지를 공란으로 링크거는데요 ~~

테스트 : http://codeigniter.cafe24.com/board/lists/page/10  에서 1 클릭해 보세요 ~~



헛발이 / 2009/11/25 14:09:18 / 추천 0
그러게요.... 그래서 아무것도 없을땐 0으로 처리 하고
본문에서 돌아가기나.. 등록후 첫페이지로 돌아갈땐 page값을 안 주고 넘여야 할듯싶은데..

포럼에서보면 또 첫페이지에는 page/1값을 넘기길래요... ^^;
1페이지를 지정해 줘야 하나 하고 고민하고 있었죠...
헛발이 / 2009/11/25 14:20:05 / 추천 0
일단 page/1은 page/로 하는걸로 통과 하겠습니다.. ㅋㅋ
이제 다음으로 넘어가야죠... ^^;
ci세상 / 2009/11/25 14:33:30 / 추천 0
포럼소스는 별도로 만들었습니다.^^