CI 묻고 답하기

제목 CI 초보가 질문 드립니다!!
글쓴이 광복절 작성시각 2011/07/04 02:41:19
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 21843   RSS
TIP -> 게시물 이동함

헐~ TIP 란에 질문을 올렸는지 생각도 못했습니다 ㅋ

안녕하세요 김광복 이라고 합니다.
아래 코드를  코드로 2시간째 어리둥절 하고 있습니다. 메뉴얼을 암만봐도 모르겠습니다.

아직 초보라 컨트롤에서 모두 처리하고 있습니다.

// 컨트롤러 부분
$query = $this->db->get('table'); 
$data = $query->result_array();
$this->load->view('test',$data);

//뷰
<? foreach ($data  as $row):?>
echo "$row[test]';
 <?php endforeach; ?>
//뷰

에러 가 납니다 ㅠ.ㅠ

아래와 같이 하면 잘됩니다..

// 컨트롤러
$query = $this->db->get('table'); 
$data['item'] = $query;
$data = $data['item'] ;
$this->load->view('test',$data);
/
/ 뷰
 <? foreach ($item->result_array() as $row) :?>
생략 ...

1번에서 처럼 하려는게  컨트롤러에서 $data 를 수정하고 다시

뷰페이지에 던지려고 하는거라서요.

마야님 보드랑 기타 소스 보면 다들 모델에서 처리하셔서 ㅠ.ㅠ

어디 팁란 보면 초보는 " 컨트롤러에서 처리하는거부터 배워라 해서 열쉬미 열공하고
있습니다.
조언 부탁드립니다.



 다음글 post로 값 불러오기 방법여쭙니다~ (4)
 이전글 트위터 연동 질문입니다. - (2)

댓글

헛발이 / 2011/07/04 08:19:59 / 추천 0
가능하면 모델을 사용하는것이 좋겠지만 일단 처음 시작하시는 분이니 자기가 원하는 부분에서 원하는데로 출력이 되는것이 가장 하고 표현하고 싶을것이라 생각되니 모델 이야기는 차차 하기로 하고..

일단

컨트롤러에서 뷰로 리절트값을 보내려면 이렇게 하시면 됩니다.
//콘트롤러에서
$query = $this->db->get('table'); 
$data['query'] = $query->result_array();
$this->load->view('test',$data);

//뷰에서
<?php
foreach ($query  as $row):
    echo "$row[test]';
endforeach;
?>
즉 $this->load->view('test', $data); 에서 $data는 변수가 아니고 배열로 넘겨 주셔야 합니다.
그러니 view를 load하기 전에 $data['query'] = DB에서 불러온 값을 넣어 주는것이지요..

배열의 값은 꼭 query로 할 필요는 없어요.. 다만 배열의 키 값이 뷰에서 변수명으로 사용한다는것이죠..
즉 $data['query'] 로 하시면 뷰에서 $query로 사용하는것이고..
$data['test'] = 하시면 뷰에서는 $test로 값을 사용하는것이랍니다..

하지만 위의 코드를 조금 더 수정하면 값을 보통 array로 불로 오지 않습니다.
위의 소스가 틀린것은 아니지만 특별한 경우에만 array로 사용하고 대부분 오브젝트로 불러온답니다.
그래서 위의 소스를 조금 수정해 보면 ..
//콘트롤러에서
$query = $this->db->get('table'); 
$data['query'] = $query->result();
$this->load->view('test',$data);

//뷰에서
<?php
foreach ($query  as $row) :
    echo $row->test;
endforeach;
?>
즉 데이터를 불러 올때 $query->result()로 불러 온다면 foreach로 반복시킬때 $row->test형식으로 표현 할 수 있답니다. 아마 대부분 result()로 해서 $row->test형식으로 하실 거에요 .. 저도 그렇게 하고 있구요..

차차 하나씩 변경해 보면서 연습하시고 나중에 모델도 사용하시고 라이브러리도 사용하시고 하면 좋은 소스코드가 될거에요...


그럼...
광복절 / 2011/07/04 10:05:05 / 추천 0
답변 너무너무 감사드립니다 금쪽같은 조언중 result 를 사용 하시길 권장 하셧는대요 result_array 와 속도면에서 차이가 있나요 문득 data-test 와 data['test'] 중에 전자가 에코 하기 편하다는 생각이 드네요
헛발이 / 2011/07/04 11:32:26 / 추천 0
저도 초보자에 속하기 때문에 속도는 정확히 어디가 좋다고 판단해 드릴순 없구요..

개인적인 생각은 우리가 우주왕복선 만드는것도 아니고 핵무기 만드는것도 아니니 0.0000000000000000001초에 해당되는 것에 너무 예민할 필요는 없다고 생각이 듭니다. (주관적인 생각)

하지만 우리가 다른 프래임워크를 사용하지 않고 코드이그나이터에 열광 하는것은 다른 프레임워크보다 속도가 빠르고 코드작성법이 간단하단 이유이기 때문에 속도에 연연할 필요는 있지만 결국 코드가 커지고 많은것을 수용하다 보면 결국 타 프래임워크와 별반 차이 없다고 생각됩니다.

코드이그나이터네서는 자신이 직접 구간별 또는 수행별 시간을 직접 체크 할수 있도록 속도체크 함수를 제공해 주고 있답니다. 그러니 그것을 이용해서 직접 속도를 체크 할수 있답니다..

속도체크 함수는 벤치마킹이라고 해서 메뉴얼에 사용설명법이 나와 있답니다.

http://codeigniter-kr.org/user_guide/libraries/benchmark.html

위의 링크를 클릭해서 한번 직접 테스트 해 보시기 바랍니다..

변종원(웅파) / 2011/07/05 09:09:34 / 추천 0
시간 내서 매뉴얼 한번 쭉 읽어보시는걸 추천합니다. 라이브러리쪽까지는 아니더래도 기본 구조에 관한 부분은 읽어보시기 바랍니다.