[Codeigniter 입문] Codeigniter의 개념 잡기와 게시판 만들기 4 – 데이터베이스와 통신하기

 

먼저 DB관리툴에 접속하셔서, Codeigniter라는 데이터베이스를 만드시고 (이름은 상관 없습니다.) 아래와 같은 쿼리를 통해 테이블을 하나 생성합니다.

 

 

0.jpg

 

 

이 테이블은 게시판에 사용할 녀석은 아니고, 일단 테스트로 만들어 보는 테이블입니다. 간단하게 primary key와 내용만을 저장합니다.

 

 

이제 데이터베이스 테이블은 준비가 되었으니, codeigniter로 돌아가서 데이터베이스 세팅을 해 봅니다. 먼저 application/config/database.php를 열면 다음과 같은 내용이 있습니다.

 

 

 1.jpg

 

 

여기서 hostname, username, password, database를 본인의 환경에 맞추어 입력하고 저장합니다.

 

 

이로써 데이터베이스 설정은 다 끝났습니다. 이제 코드만 작성하면 됩니다.

 

 

지난 번 MVC패턴에 대해 짧게 설명 드린 것 기억 나시나요? Controller는 View와 Model 사이에 메시지를 전달하고, Model은 데이터베이스와 통신하며, View는 그 결과를 사용자에게 보여주고 Interaction합니다. M, V, C중 어떤걸 제일 먼저 만드느냐에 대한건 저도 잘 모르겠지만, 일단 저는 Controller를 먼저 만듭니다. Application/controllers 안에 test.php파일을 생성합니다. 그리고 다음과 같이 코드를 입력합니다.

 

 

2.jpg

 

 

생성자에서 Test_model이라는 모델을 로드하고, (이 모델은 잠시 뒤에 만들겁니다.) lists라는 메소드로 들어오면 Test_model에 정의된 get_list라는 메소드를 통해 데이터베이스와 통신한 결과를 받아와 lists라는 view를 로드하며 받아온 데이터를 넣어줍니다. 저장하고, Model을 만들어 봅시다.

 

 

Application/models에 test_model.php를 생성하고, 다음과 같이 입력합니다.

 

 

3.jpg

 

 

생성자에서는 database를 초기화 하고 로드합니다. 10라인부터는 아까 controller에서 사용했던 get_list 메소드를 정의하는데, codeigniter에서는 두 가지 방법으로 쿼리를 날릴 수 있습니다. 첫 번째 방법은 직접 쿼리를 작성해 날리는 방법입니다. 다음과 같이 사용합니다.

 

 

$this->db->query(‘select * from test’);

 

 

혹은, 위와 같은 쿼리를 아래처럼 쓸 수도 있습니다.

 

 

$this->db->from(‘test’);

 

 

아래와 같은 쿼리는 액티브 레코드 데이터베이스 패턴이라고 하는데, 이는 더 단순하게 데이터베이스 쿼리를 만들 수 있게 해줍니다.

 

 

예를들어 from절 뒤에 where, order by가 붙어있다면, 다음과 같이 사용하면 됩니다.

 

 

$this->db->from(‘test’)->where(array(‘no’ => 1))->order_by(‘no’,’desc’);

 

 

이를 메소드 체이닝이라고 합니다. 액티브 레코드에 관한 자세한 정보는 http://codeigniter-kr.org/user_guide_2.1.0/database/active_record.html 에서 확인할 수 있습니다.

 

 

따라서 위 코드에서 작성한 쿼리는 select * from test와 같은 의미이고, get()을 통해 결과를 받아오며, result_array()를 통해 이를 array에 저장합니다. 그리고 그 결과값을 반환합니다.

 

 

이 반환된 데이터는 아까 작성했던 컨트롤러로 보내지고, 이를 view로 보내게 됩니다. 우리는 이 과정까지 완성을 했고, 이제 view에서 이를 뿌려주기만 하면 됩니다.

 

 

Application/views에 lists.php를 만들고, 아래와 같이 입력합니다.

 

 

4.jpg

 

 

아무것도 꾸며지지 않은, 단순히 보여주기만 하는 view입니다. View를 저장하고, 이제 실행해 봅니다.

 

 

http://your-domain.com/index.php/test/lists 로 접속해 보세요. 아직 데이터베이스에 내용이 없으니 번호 내용이라는 글씨만 나올 겁니다. 데이터베이스에 손으로 데이터를 몇 개 넣어 보세요. 정상적으로 나오죠?

 

 

이로써 간단하게 데이터베이스와 통신을 테스트 해봤습니다. 그리고 M/V/C를 나누어 코딩을 했는데, 지난 번 너무 모호하게 설명된 내용때문에 헷갈리신 분들도 이번 강좌를 통해 조금이나마 개념이 잡히셨을 것으로 믿습니다.
techsupport
Author

techsupport