[1부]에 이어서 시작합니다.
CI를 시작하기 위해서는 기본 경로를 설정해 줘야 합니다.
system/application/config/config.php 파일을 열어서... 'base_url'을 아래와 같이 수정해 줍니다.
$config['base_url'] = "http://localhost/ci/";
정상적으로 설치가 되었으면 아래와 같이 나옵니다.
데이터 베이스의 연결이 설정 되어 있는데로 설정르 합니다.
파일은 system/application/config/database.php 입니다.
이번 포스팅에서 사용할 db는 helloworld이고 사용자아이디와 암호는 "root"로 했습니다.
$db['default']['hostname'] = "localhost";
$db['default']['username'] = "root";
$db['default']['password'] = "root";
$db['default']['database'] = "helloworld";
$db['default']['dbdriver'] = "mysql";
이제는 어플리케이션을 시작하면 항상 DB를 연결하도록 설정을 해 보겠습니다. system/application/config/autoload.php 파일을 열어서 보시면, $autoload['libraries']에 array('')가 비어 있습니다. 거기에 아래와 같이 database를 추가해 주세요.
$autoload['libraries'] = array('database');
먼저 MySQL에서 helloworld라는 데이터베이스를 생성합니다. 그리고 데이터 베이스가 비어 있으면 허전하죠? 데이터베이스를 채워 보겠습니다. 아래의 쿼리를 실행해서 데이터 베이스를 입력합니다.
CREATE TABLE `data`
`id` int(11) NOT NULL auto_increment,
`title` varchar(255) NOT NULL,
`text` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
INSERT INTO `data` (`title`, `text`) VALUES('Hello World!', 'CodeIgniter is a powerful PHP framework with a very small footprint, built for PHP coders who need a simple and elegant toolkit to create full-featured web applications. If you''re a developer who lives in the real world of shared hosting accounts and clients with deadlines, and if you''re tired of ponderously large and thoroughly undocumented frameworks');
처음에 사용할 Controller를 지정해 줘야 합니다.
다시 system/application/config/routes.php 파일을 엽니다. 여기 기본값은 welcome이라도 되어 있을 겁니다. 이걸 helloworld로 변경합니다.
$route['default_controller'] = "helloworld";
위와 같이 설정을 해 주시면, 기본 컨트롤러가 기존의 system/application/controllers/welcome.php파일이 아닌 system/application/controllers/helloworld.php 파일을 읽게 됩니다. 그럼 이제, system/application/controllers/helloworld.php 파일을 만들고, 아래와 같이 입력해 주세요.
<?php
class Helloworld extends Controller{
function index()
{
$this->load->model('helloworld_model');
$data['result'] = $this->helloworld_model->getData();
$data['page_title'] = "CI Hello World App!";
$this->load->view('helloworld_view',$data);
}
}
?>
여기서 주의점은 클래스의 이름의 첫 글자는 대문자로 해야 합니다.
$this->load->model('helloworld_model')을 불러서 db의 데이터를 제어하고, 마지막은 $this->load->view('helloworld_view', $data)를 통해서 view에 있는 html과 데이터을 출력해 주는 형식입니다.
여기서는 database를 연결해서 데이터를 읽어 오는 클래스 입니다. 여기서는 액티브 레코드(Active Record Class)를 이용해서 제어를 해 보겠습니다. 먼저 system/application/models 디렉토리에 helloworld_model.php 파일을 만듭니다. 그리고 아래와 같은 코드를 입력해 줍니다.
<?php
class Helloworld_model extends Model {
function Helloworld_model()
{
// 모델 생성자 호출
parent::Model();
}
function getData()
{
// data테이블의 모든 레코드를 불러 옴.
$query = $this->db->get('data');
if ($query->num_rows() > 0)
{
return $query->result();
}else{
show_error('Database is empty!');
}
}
}
?>
위 코드는 data 테이블의 모든 데이터를 블러와서 리턴하는 코드 입니다. 이전 챕터의 controller를 getData의 리턴값으로 이 데이터베이스의 결과 값을 받게 됩니다.
이제는 이 결과 값을 보여줄 페이지를 제작합니다. system/application/views 폴더에 helloworld_view.php 파일을 만들어 줍니다. 그리고 아래와 같은 내용을 넣습니다.
<html>
<head>
<title><?=$page_title?></title>
</head>
<body>
<?php foreach($result as $row):?>
<h3><?=$row->title?></h3>
<p><?=$row->text?></p>
<br />
<?php endforeach;?>
</body>
</html>
여기서는 foreach문으로 돌면서 data 테이블에 있는 내용을 출력해 줍니다. 지금은 1개 밖에 들어 있지 않아서 1개만 출력 되는데.. 추가로 입력이 되어 있으면 더 많은 데이터를 출력 합니다.
view는 기본적으로 controller에서 보내 준 값을 출력만 하는 형태라고 생각하시면 됩니다. 물론 php코딩도 할 수 있지만, 기본적인 출력만을 제작하는 것을 권장한다고 합니다.
그러면 주소는 어떻게 될까요?
지금은 기본 route를 helloworld.php로 해 뒀으니까.
http://localhost/ci/
이렇게만 하면 helloworld.php의 화면을 볼 수 있습니다. 그러면 초기에 있던 welcome.php를 보고 싶으면 어떻게 해야 할까요?
먼저 appache에 rewrite 엔진이 설정 되어 있어야 합니다. 그럼, CI가 설치된 폴더에 .htaccess 파일을 만들고 아래와 같은 내용을 입력해 줍니다.
RewriteEngine on
RewriteCond $1 !^(index\.php|/img|/js|/css|/robots\.txt|/favicon\.ico)
RewriteRule ^(.*)$ /ci/index.php/$1 [L]
그리고 system/application/config/config.php 파일에 index_page의 설정 값을 지워 줍니다.
$config['index_page'] = '';
이렇게 해 주면.
index.php를 중간에 넣지 않고도 원하는 페이지를 부를 수 있습니다.
위 예제 파일 소스 입니다. CI를 다운 받으신 후 덮어서 쓰기 해서 사용하시면 됩니다.
DB에 데이터를 입력하고, DB의 설정 만 바꾸시면 동작을 바로 동작 할 껍니다.
이 외에도 CodeIgniter의 소스가 많이 공개 되어 있습니다.
'Programming > PHP' 카테고리의 다른 글
mysqli::real_connect(): Headers and client library minor version mismatch. (0) | 2017.12.12 |
---|---|
How to read a value from JSON using PHP? (0) | 2017.07.27 |
[기초정리 잘 됨] [PHP] Codeigniter (코드이그나이터) Model (0) | 2017.07.21 |
[Codeigniter DB 연동] 2. Codeigniter 셋팅 (0) | 2017.07.21 |
[확인 안됨] 배열 stdclass <-> array 변환 (0) | 2017.07.21 |
댓글