목차

개요

설치

설정

DATABASE 설정

AUTOLOAD 설정

CONFIG 설정

.htaccess 설정

활용

테스트에서 DB는 Mysql을 사용했고 test란 테이블을 하나 만들었습니다. 테이블에 Id int(11)autoincrease, title varchar(255), contents text란 컬럼이있습니다. 이제 test 테이블에 데이터를 쓰고, 읽고 , 수정, 삭제 하는 간단한 프로그램을 만들어 보도록 하겠습니다.

단계1

class Blog extends CI_Controller {

public function index()
{
	echo "hello codeigniter";
}

}

<? class Blog extends CI_Controller {

 /*생성자 입니다. CI 컨트롤러가 실행될때 가정 먼저 실행됩니다.*/
 public function __construct() 
 { 
   parent::__construct(); 
   /*url helper 입니다. anchor 같은 함수를 사용할 때 사용합니다.*/
   $this->load->helper('url');
   /*url helper 입니다. form기능을 좀더 쉽게 만들어 줍니다.*/
   $this->load->helper('form');
 } 
 
  /*index 메소드 입니다. 특정 메소드가 없으면 호출되는 함수 입니다.*/
	public function index()
	{
			   
			   /* models 폴더에서 test.php 모델을 호출합니다. */
			   $this->load->model('test');
			   /* data 배열의 query란 이름으로 test 모델에서 가져온 엔트리 값을 넣어 줍니다*/
			   $data['query'] = $this->test->all_entries();
			   
			   /*main이라는 뷰 즉 main.php를 views 폴더에서 호출합니다. $data 배열도 같이 보냅니다.*/
				 $this->load->view('main',$data);
	}
		
	/* wirte 메소드 입니다. write 메소드는 글을 입력 할때 사용하는 메소드입니다.*/
	public function write()
	{
		    /*views 폴더에 write.php 페이지를 호출합니다.*/
				$this->load->view('write');
	}    
	
	/* update 입니다. 글을 수정을 할때 사용하는 페이지 입니다.*/
	public function update()
	{
		    /* get_where 함수와 3번째 세그번트 값을 이용하여 test 테이블의 특정 id 데이터만 가지고 옵니다.
		    간단한 데이터를 위처럼 모델을 사용하지 않고 바로 호출하는게 더 간단 할 수 있습니다.*/
		    $data['query'] = $this->db->get_where('test',array('id' => $this->uri->segment(3)));
		    /* views 폴더의 update.php 파일을 호출합니다. */
				$this->load->view('update',$data);
	} 
	/* delete 입니다. 특정 id 번호를 삭제 합니다.*/
	public function delete()
	{ 
		    /*실제로 파일을 삭제 하는 부분입니다. delete를 이용하여 3번째 세그번트의 id 값을 삭제 합니다.*/
		    $this->db->delete('test',array('id' => $this->uri->segment(3)));
		    /*삭제 후에 자동으로 가는 페이지 입니다.*/
		    redirect('blog/index/');
	} 
	   
	
	/* 글을 쓴 data를 insert합니다. write.php 에서 데이터를 보내면 데이터를 입력합니다.*/
	public function data_insert()
	{
		    /* models 폴더에서 test.php 모델을 호출합니다. */
				$this->load->model('test');
				/* test 모델을 insert_entry() 메소드를 실행합니다. */
				$this->test->insert_entry();
	}    
	
	/* data를 update합니다. write.php 에서 데이터를 보내면 데이터를 입력합니다.*/
	public function data_update()
	{
		    /* models 폴더에서 test.php 모델을 호출합니다. */
				$this->load->model('test');
				/* update_entry 메소드를 호출합니다. */
				$this->test->update_entry();
	}    
	    

} ?>

단계2

컨트롤러에서 호출했던 모델을 만들어 보겠습니다. 모델은 내부적으로 돌아 가는 비지니스 로직 또는 데이터 입력,수정,삭제,조회 같은 기능을 합니다.

<? class test extends CI_Model {

 
/*전역 변수 입니다. 주로 컬럼 값을 미리 정해 놓고 사용할 때 전역 변수로 사용합니다. 하지만
전역 변수를 사용하게 되면 메소드 마다 사용되는 컬럼 값이 틀려 질 때 오류가 날 수 있으니깐 조심해서 사용해야 합니다.*/
var $title = ''; 
var $contents = ''; 
/* 생성자 입니다.*/
function __construct() 
{ 
	parent::__construct(); 
} 
/* test 테이블의 모든 데이터를 가지고 오는 메소드 입니다.*/
function all_entries() 
{ 
	/*test 테이블의 데이터를 가지고 옵니다. */
	$query = $this->db->get('test'); 
	return $query; 
} 

/* data를 insert 하는 함수 입니다. 특정 sql을 이용하지 않고 CI에서 제공하는 insert 함수를 사용합니다.
배열안의 데이터 이름과 컬럼 명이 같으면 자동으로 insert 됩니다.*/
function insert_entry() 
{ 
	/*이렇게 직접 컬럼 값을 $_POST를 이용하여 설정 하셔도 되고 아니면 아래 사용한 것 처럼
	$_POST로 바로 데이터를 보내셔도 됩니다. 아래와 같이 사용할 경우 form안에 엘레먼트 id 가 db 필드 명과 같아야 합니다.*/
	//$this->title = $_POST['title']; 
	//$this->contents = $_POST['contents']; 
	/*post로 받은 폼 값을 바로 넘기겠습니다.*/
	$this->db->insert('test', $_POST); 
	/* redirect로 index페이지로 넘어 갑니다.*/
	redirect('blog/index/');
} 
/* data를 update 하는 메소드 입니다.*/
function update_entry() 
{ 
	/*전역 변수로 선언한 변수에 post 넘어온 데이터를 넣습니다.*/
	$this->title = $_POST['title']; 
	$this->contents = $_POST['contents']; 
	 
  /* 3번째 세그먼트(세그먼트는 주소 창에 /로 구분되어 있는 데이터 입니다.) ID를 기준하여 update 합니다.*/
	$this->db->update('test', $_POST, array('Id' => $_POST['Id'])); 
	redirect('blog/index/');
} 

/* 데이터를 delete 하는 메소드 입니다. 사용되지는 않습니다. 간단하기에 controller에 바로 넣었습니다.*/
function delete_entry() 
{ 
	$this->db->delete('mytable', array('Id' => $Id)); 
	redirect('blog/index/');
} 

} ?>

단계3

View 를 만들어 보겠습니다. View는 클라이언트에게 보여지는 화면입니다. 이번 sample에는 View는 main, update, write 페이지로 나뉩니다. View 파일은 전부 apllication/Views 폴더에 넣어 주시면 됩니다.

main.php

<head> <title> tea-gyu </title>

<meta charset="utf-8">

</head> <body>

	<table width="800" height="400" border="1">
		<tr>
			<td>

<? /* $query에 각 row별 result 값을 받아서 item 배열에 넣습니다. row가 없을 때 까지 진행 됩니다.*/ foreach($query→result() as $item){ ?> <!– title 값을 출력 합니다.–> <h3><?=$item→title?></h3> <!– contents 값을 출력 합니다.–> <p><?=$item→contents?></p> <hr/>

<!– anchor 함수는 페이지 링크를 쉽게 해주는 uri 핼퍼의 함수입니다.–> <?=anchor('blog/update/'.$item→Id,'수정')?> <?=anchor('blog/delete/'.$item→Id,'삭제')?> <hr/>

<?}?>

<?=anchor('blog/write','데이터 쓰기')?>

			</td>
		</tr>

</body>

write.php

<head> <title> tea-gyu </title>

<meta charset="utf-8">

</head> <body>

<!-- form 핼퍼를 사용한 form_open 입니다. form 설정을 쉽게 해줍니다.-->
 <?=form_open('blog/data_insert')?>
 
<input type = "text" name = "title"></input>
<br/>
<textarea name="contents"></textarea>
<br/>
<input type= "submit" value="input" />
 <?=anchor('blog/index','main')?>
</form>

</body>

update.php

<head> <title> tea-gyu </title>

<meta charset="utf-8">

</head> <body>

 <?
 if ($query->num_rows() > 0) 
 {
 	$item = $query->row();
 	
 }
 ?>
 <?=form_open('blog/data_update')?>
 <?=form_hidden('Id',$this->uri->segment(3))?>
 
<input type = "text" name = "title" value="<?=$item->title?>"></input>
<br/>
<textarea name="contents" ><?=$item->contents?></textarea>
<br/>
<input type= "submit" value="update" />
</form>

</body>

단계4