CI 묻고 답하기

제목 코드이그나이터 날짜 셀렉트박스(Selectbox)
카테고리 CI 2, 3
글쓴이 호아세 작성시각 2017/01/17 15:08:42
댓글 : 7 추천 : 0 스크랩 : 0 조회수 : 15022   RSS

date_v.php (view) 

위에 view단그림처럼 만들려고 합니다. phpexcel을 이용한 엑셀다운로드 controller로 넘어가게 되어있습니다. 

문제는 위에 기간들을 parameter값으로 엑셀다운로드 controller에 물고가서 model안에 쿼리에 넣어주어야합니다. 

controller까지 어떻게 파라미터 값을 끌고가야할지 의문입니다. ajax 사용안하고 할 수는 없을까요 ??? 


첨부파일 셀렉트박스.jpg (13.5 KB)
 다음글 보안인증(SSL) 관련 문의드립니다.
 이전글 어제 서버관리자님이 봐주셧는데..해결이안됐네요 PHP... (14)

댓글

kaido / 2017/01/17 15:15:05 / 추천 0

ajax 와 submit 하고의 차이는? 작동 방법의 차이입니다.

ajax 사용 하시면 처리 가능 하신가요?

ajax 보내기 전에 $(id).submit(); 하시면...?

 

제가 보기에는 질문의도는 저렇게 날짜가 따로따로 된것을 어떻게 model에서 합쳐서 날짜를 검색 가능 하냐? 이신듯 합니다만...

mysql은 문자열로  '2017-01-17' 이렇게 넣어도 날짜로 인식 합니다.

$year = $this->input->get('year',true);

$month = $this->input->get('month',true);

$day = $this->input->get('day',true);

$sdate  = $year."-".$month."-".$day;

......

 

$this->db->where('date >=', $sdate);

 

생각보다 별거 없죠? ^^

호아세 / 2017/01/17 15:52:00 / 추천 0

현재 날짜인식은 다 되고 있고요 합쳐서 변수처리 $sdate 랑 $edate로 처리는 되었습니다. 말씀드리는것은 날짜를 지정한후 엑셀다운로드를 누르면  phpexcel부분 controller 단에 파라미터 값을 물고 가야 지금 작성된 쿼리에 $sdate , $edate값이 전달 될 수있는지를 여쭈는 질문이었습니다. 

 

class Excelcontroll extends CI_Controller
{
     public function __construct()
     {
          parent::__construct();
          //Call PHPExcel class
           $this->load->database();
           $this->load->model('excel/_excel_m');
           $this->load->helper("url");
           //$this->load->third_party('PHPExcel');
     }

     public function excel_new(){

 

$this->excel->getActiveSheet()->setCellValue('A2', '상품');
        $this->excel->getActiveSheet()->setCellValue('B2', '구매일');
        $this->excel->getActiveSheet()->setCellValue('C2', '작성일');

 

$List = $this->excel_m->date_list();

foreach($List as $row):

            $this->excel->getActiveSheet()->setCellValue('A'.$n, $row->name);
            $this->excel->getActiveSheet()->setCellValue('B'.$n, substr($row->buy_date,0,10));
            $this->excel->getActiveSheet()->setCellValue('C'.$n, substr($row->reg_date,0,10));

 

$n++;
        endforeach;

       $filename= 'list_'.date('Y.m.d.h.i.s').'.xls'; //save our workbook as this file name
        header('Content-Type: application/vnd.ms-excel'); //mime type
        header('Content-Disposition: attachment;filename="'.$filename.'"'); //tell browser what's the file name
        header('Cache-Control: max-age=0'); //no cache
 
        $objWriter = PHPExcel_IOFactory::createWriter($this->excel, 'Excel5'); 
 
        //force user to download the Excel file without writing it to server's HD
        $objWriter->save('php://output');    

}

 

간단하게 이 controller 안으로 파라미터 값을 가져와 excel_new 메소드안에 model (excel_m)메소드 쿼리에 파라미터값을 넘기고자 합니다.  

kaido / 2017/01/17 15:58:50 / 추천 0

넵 가능 합니다.

excel 파일 제작의 기본은 model 에서 불러낸 쿼리 값을 바탕으로 만들어집니다.

그 베이스는 html 에서 table 로 데이터 가져오는 것을 엑셀 타입으로 파일 저장 하는 것 밖에 되지 않습니다.

대신 현재 로직에선 조금 변경이 필요해 보입니다.

호아세 / 2017/01/17 16:01:11 / 추천 0
어떻게 로직을 변경해야 가능할까요 ???? 
kaido / 2017/01/17 16:06:33 / 추천 0
$List = $this->excel_m->date_list();
print_r($List);

exit;


CI model 사용법을 알고 계시다면, 실행 해보시면 단번에 이해 되시라고 생각 됩니다.

kaido / 2017/01/17 16:14:32 / 추천 0
혹시 이거 찾으신 건가요?


현재 검색과 다르게 엑셀 호출 하는 쪽에 파라메터를 따로 넘기는 방법.


크게 2가지 있습니다.

1. ifream 을 만들어서 넘기는 방법.

2. form 을 따로 하나 더 만드는 방법
<button id='excel_down' >엑셀다운</button>
<form action="/excelcontroll/excel_new/" id='excel'>
....
<input type="hidden" name="sdate" />
</form>

<script>
$("#excel_down").click(function(){
$("input[name='sdate']").val('2017-01-01');
$("#excel").submit();
});
</script>

 

어떤 방법을 취하든 일단 parameter를 전달해 줘야 받아 올수 있습니다.

 

참고로 엑셀 다운로드 파라메터 전달에 트릭이 좀 있다면...

엑셀 다운로드 파라메터와 일반 페이지 호출 하고 동일 하다는 것입니다.

[일반적으로 현재 보는 자료를 엑셀로 받아오기 하는 기능이기 때문]

 

현재 페이지에서 사용하는 파라메터는 엑셀 다운로드에도 사용된다는 것입니다.

트릭을 써보면 현재 페이지에서 사용하는 파라메터를 엑셀 다운로드쪽에도 혼용해서 넘겨줄수 있습니다.

방법은 한번 생각해 보시기 바랍니다. 

호아세 / 2017/01/17 18:50:40 / 추천 0
아~~감사합니다. 2번째방법으로 넘겼습니다~~~