2012-10-18 3 views
1

조인트 테이블의 CI 페이지 매김에 대한 도움이 필요합니다.페이지 매김 CI 병합 테이블

다음 코드는 작동하지 않습니다. 모든 정보는 단일 페이지에 표시되지만 링크 ($ this-> pagination-> create_links();)는 정확한 페이징으로 올바른 페이지 크기를 보여줍니다. 다음 페이지를 클릭하거나 다른 페이지를 클릭 할 때마다 동일한 결과가 표시됩니다. 이 작업을 성공적으로 수행하기위한 제안. 고맙습니다.

public function last_three_months(){ 
$this->load->model('mymodel'); 
$this->load->database(); 
$this->load->library('btree'); 
$this->load->library('session'); 
$this->load->library('string'); 
$this->load->library("Pagination"); 



    if(date("l",strtotime('now')) == "Monday") 
     $isMonday = strtotime('now'); 
    else 
     $isMonday = strtotime('last Monday'); 
    $min = $isMonday - 7257600; // 7257600 = 12 weeks 
    $max = strtotime('now'); 
    //echo(date("l d M Y",$duration)); 

    $result = $this->mymodel->query('SELECT DISTINCT pi.ID PLAN_ID, pi.IMP_PLAN_DATE DUE_DATE, pi.CHANGE_TICKET CHANGE_TICKET, 
    pi.PLAN_DESC PLAN_DESC, pi.EC_STAT EC_STAT, per_info.ID PERSON_ID, per_info.FIRSTNAME OWNER_FIRST,per_info.LASTNAME OWNER_LAST,ps.STATUS PLAN_STAT, 
    pi.TIMESTAMP TIMESTAMP, sn.SN SN, loc.ABBR ABBR, sf.SF SF, pn.ID pn_id, pn.TYPE pn_type, pn.CODE pn_code, pn.YEAR pn_year, pn.NAME pn_name, si.IMP_STAT IMP_STAT 
    FROM `Plan_Info` pi, `Member` member,`Person_Info` per_info,`Plan_Stat` ps,`Sn_Imp` si,`System_Name` sn, 
    `Location` loc, System_Family sf, PN pn 
    WHERE member.MEM_TYPE = "Implementer" AND pi.OWNER = member.PERSON_ID AND member.PERSON_ID = per_info.ID AND pi.PLAN_STAT = ps.ID AND pi.ID = si.PLAN_ID AND si.SN_ID = sn.ID AND sn.LOC_ID = loc.ID AND sn.SF_ID = sf.ID 
    AND pi.PN_ID = pn.ID AND pi.IMP_PLAN_DATE >= '.$min. ' AND pi.IMP_PLAN_DATE < '.$max.' ORDER BY pi.IMP_PLAN_DATE, loc.ABBR, sf.SF')->result_array();  

    $plan_info = $this->btree->convertToBtree($result, array('PLAN_ID','DUE_DATE','CHANGE_TICKET','PLAN_DESC','EC_STAT','PERSON_ID','OWNER_FIRST', 
    'OWNER_LAST','PLAN_STAT','TIMESTAMP','SN','ABBR','SF','pn_id','pn_type','pn_code','pn_year','pn_name','IMP_STAT'), array('PLAN_ID','pn_id','DUE_DATE','ABBR')); 

    $total = count($plan_info); 

    $config = array(); 
    $config["base_url"] = base_url() . 'index.php/implementer/last_three_months/'; 
    $config["total_rows"] = $total; 
    $config["per_page"] = 3; 
    $config["uri_segment"] = 3; 
    $config['first_link'] = 'First'; 
    $config['last_link'] = 'Last'; 
    $config['next_link'] = 'next'; 
    $config['prev_link'] = 'prev'; 
    //$config['use_page_numbers'] = TRUE; 
    $this->pagination->initialize($config);   




    $link = $this->pagination->create_links(); 
    $content_data = array(
     'plan_info' => $plan_info, 
     'link' => $link 

    ); 

    $this->load->view('implementer/view_weekly/header'); 
    $this->load->view('logo'); 
    $this->load->view('nev'); 
    $this->load->view('implementer/view_weekly/content',$content_data); 
    $this->load->view('implementer/view_weekly/footer'); 

} 
+0

현재 귀하의 질문이 너무 막연합니다. 편집하고 더 명확하게 해보십시오. – itachi

+0

@itachi 질문을 고치려고하는데 고마워요 – Zatanna

+0

당신이 그걸 썼을 때 그 일이 잘됩니다. 쿼리에'limit'을 추가하면됩니다. – itachi

답변

1

첫 번째로, MVC 디자인 컨셉을 완전히 망쳤습니다. 더 적은 것, 그것 넓은 주제이고 당신이 질문 한 무슨이 아니다 그래서 나는 당신의 문제 해결에 집중할 것이다.

public function last_three_months(){ 
$this->load->model('mymodel'); 
$this->load->database(); 
$this->load->library('btree'); 
$this->load->library('session'); 
$this->load->library('string'); 
$this->load->library("Pagination"); 

    $per_page = 10; 
    $page = $this->uri->segment(3, 1); 
    $limit = ($page-1)* $per_page; 




    if(date("l",strtotime('now')) == "Monday") 
     $isMonday = strtotime('now'); 
    else 
     $isMonday = strtotime('last Monday'); 
    $min = $isMonday - 7257600; // 7257600 = 12 weeks 
    $max = strtotime('now'); 
    //echo(date("l d M Y",$duration)); 


//Change the following query to COUNT(id) or something like that. 
    $sql = 'SELECT DISTINCT pi.ID PLAN_ID, pi.IMP_PLAN_DATE DUE_DATE, pi.CHANGE_TICKET CHANGE_TICKET, 
    pi.PLAN_DESC PLAN_DESC, pi.EC_STAT EC_STAT, per_info.ID PERSON_ID, per_info.FIRSTNAME OWNER_FIRST,per_info.LASTNAME OWNER_LAST,ps.STATUS PLAN_STAT, 
    pi.TIMESTAMP TIMESTAMP, sn.SN SN, loc.ABBR ABBR, sf.SF SF, pn.ID pn_id, pn.TYPE pn_type, pn.CODE pn_code, pn.YEAR pn_year, pn.NAME pn_name, si.IMP_STAT IMP_STAT 
    FROM `Plan_Info` pi, `Member` member,`Person_Info` per_info,`Plan_Stat` ps,`Sn_Imp` si,`System_Name` sn, 
    `Location` loc, System_Family sf, PN pn 
    WHERE member.MEM_TYPE = "Implementer" AND pi.OWNER = member.PERSON_ID AND member.PERSON_ID = per_info.ID AND pi.PLAN_STAT = ps.ID AND pi.ID = si.PLAN_ID AND si.SN_ID = sn.ID AND sn.LOC_ID = loc.ID AND sn.SF_ID = sf.ID 
    AND pi.PN_ID = pn.ID AND pi.IMP_PLAN_DATE >= '.$min. ' AND pi.IMP_PLAN_DATE < '.$max.' ORDER BY pi.IMP_PLAN_DATE, loc.ABBR, sf.SF'; 

    $sql2 = 'SELECT DISTINCT pi.ID PLAN_ID, pi.IMP_PLAN_DATE DUE_DATE, pi.CHANGE_TICKET CHANGE_TICKET, 
    pi.PLAN_DESC PLAN_DESC, pi.EC_STAT EC_STAT, per_info.ID PERSON_ID, per_info.FIRSTNAME OWNER_FIRST,per_info.LASTNAME OWNER_LAST,ps.STATUS PLAN_STAT, 
    pi.TIMESTAMP TIMESTAMP, sn.SN SN, loc.ABBR ABBR, sf.SF SF, pn.ID pn_id, pn.TYPE pn_type, pn.CODE pn_code, pn.YEAR pn_year, pn.NAME pn_name, si.IMP_STAT IMP_STAT 
    FROM `Plan_Info` pi, `Member` member,`Person_Info` per_info,`Plan_Stat` ps,`Sn_Imp` si,`System_Name` sn, 
    `Location` loc, System_Family sf, PN pn 
    WHERE member.MEM_TYPE = "Implementer" AND pi.OWNER = member.PERSON_ID AND member.PERSON_ID = per_info.ID AND pi.PLAN_STAT = ps.ID AND pi.ID = si.PLAN_ID AND si.SN_ID = sn.ID AND sn.LOC_ID = loc.ID AND sn.SF_ID = sf.ID 
    AND pi.PN_ID = pn.ID AND pi.IMP_PLAN_DATE >= '.$min. ' AND pi.IMP_PLAN_DATE < '.$max.' ORDER BY pi.IMP_PLAN_DATE, loc.ABBR, sf.SF LIMIT '.$limit.', '.$per_page; 

    $total = $this->mymodel->query($sql)->num_rows(); 

    $result = $this->mymodel->query($sql2)->result_array();  

    $plan_info = $this->btree->convertToBtree($result, array('PLAN_ID','DUE_DATE','CHANGE_TICKET','PLAN_DESC','EC_STAT','PERSON_ID','OWNER_FIRST', 
    'OWNER_LAST','PLAN_STAT','TIMESTAMP','SN','ABBR','SF','pn_id','pn_type','pn_code','pn_year','pn_name','IMP_STAT'), array('PLAN_ID','pn_id','DUE_DATE','ABBR')); 

    $total = count($plan_info); 

    $config = array(); 
    $config["base_url"] = base_url() . 'index.php/implementer/last_three_months/'; 
    $config["total_rows"] = $total; 
    $config["per_page"] = $per_page; 
    $config["uri_segment"] = 3; 
    $config['use_page_numbers'] = TRUE; 
    $config['first_link'] = 'First'; 
    $config['last_link'] = 'Last'; 
    $config['next_link'] = 'next'; 
    $config['prev_link'] = 'prev'; 
    //$config['use_page_numbers'] = TRUE; 
    $this->pagination->initialize($config);   




    $link = $this->pagination->create_links(); 
    $content_data = array(
     'plan_info' => $plan_info, 
     'link' => $link 

    ); 

    $this->load->view('implementer/view_weekly/header'); 
    $this->load->view('logo'); 
    $this->load->view('nev'); 
    $this->load->view('implementer/view_weekly/content',$content_data); 
    $this->load->view('implementer/view_weekly/footer'); 

}