일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- TextView 일부분
- Chat GPT
- codeigniter
- Location Permission
- PHP Storm
- sourceSet
- Github Token
- Android Flavor
- git
- nextFocusDown
- junit
- git cannot identify version of git executable
- Execution failed for task ':test'.
- 안드로이드 자동으로 포커싱
- 여러 개
- Android Studio
- AWS
- Linux 패키지 관리자
- 다음으로 이동
- php
- MySQL
- 팝업 바깥 레이어
- Github 등록
- XML Opacity
- mac 패키지 관리자
- InvalidTestClassError
- 챗지피티
- 5회 인증
- 챗GPT
- docker에서 mysql 실행
- Today
- Total
128june
[Codeigniter] 기본적인 MVC 모델 구현 본문
Database의 내용을 조회하는 기본적인 MVC 모델을 만들어보겠습니다!
글 작성에 앞서서 아직 Codeigniter과 Database를 연결하지 못하신분은
[Codeigniter] Database 설정하기 (Mysql 5.7)를 참고해주세요!
※ Database 설정
먼저 저는 다음과 같은 board 테이블을 만들었습니다.
똑같이 따라하실 분들을 위해서 create 와 insert 코드를 올려놓겠습니다.
CREATE TABLE board (
id INT(20) AUTO_INCREMENT PRIMARY KEY,
pid INT(20) DEFAULT 0 ,
user_id VARCHAR(20),
user_name VARCHAR(20) NOT NULL,
title VARCHAR(50) NOT NULL ,
contents text ,
view_cnt INT(20) not null DEFAULT 0 ,
enroll_date DATETIME NOT NULL
) DEFAULT CHARACTER SET utf8;
id : Auto_Increment 되는 항목으로 글 번호입니다.
pid : 원글 번호로 기본은 0번이고, 댓글을 만들 시 해당하는 원글의 id가 pid로 설정됩니다.
user_id : 유저 아이디
user_name : 유저 이름
title : 글 제목
contents : 내용
view_cnt : 조회수 => 기본값은 0으로 지정하였습니다.
enroll_date : 작성 날짜 (임의로 정하여 넣었습니다. 나중에 수정할 예정으로 수정하실 분들은 바꾸셔도됩니다!)
INSERT INTO board
(user_id, user_name, title, contents, view_cnt, enroll_date)
VALUES
('aaa1','홍길동1','1번글작성','test',0,'2020-06-05 11:14:00');
INSERT INTO board (
user_id, user_name, title, contents, view_cnt, enroll_date)
VALUES
('aaa2','홍길동2','2번글작성','test',0,'2020-06-05 11:15:00');
INSERT INTO board (
user_id, user_name, title, contents, view_cnt, enroll_date)
VALUES
('aaa3','홍길동3','3번글작성','test',0,'2020-06-05 11:16:00');
INSERT INTO board (
user_id, user_name, title, contents, view_cnt, enroll_date)
VALUES
('aaa4','홍길동4','4번글작성','test',0,'2020-06-05 11:17:00');
INSERT INTO board (
user_id, user_name, title, contents, view_cnt, enroll_date)
VALUES
('aaa5','홍길동5','5번글작성','test',0,'2020-06-05 11:18:00');
INSERT INTO board (
pid, user_id, user_name, title, contents, view_cnt, enroll_date)
VALUES
(5,'aaa5','홍길동5','5번글의 댓글 작성','test',0,'2020-06-05 11:18:00');
INSERT INTO board (
pid, user_id, user_name, title, contents, view_cnt, enroll_date)
VALUES
(4,'aaa4','홍길동4','4번글의 댓글 작성','test',0,'2020-06-05 11:18:00');
1. 먼저 Board.php 라는 이름의 Controller를 만들어줍니다.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Board extends CI_Controller {
/**
* Board constructor. : 생성자
*/
public function __construct()
{
// 기본 선언
parent::__construct();
$this->load->model('Board_model');
}
/**
* 주소에서 method가 생략되었을 때 기본으로 실행
*/
public function index(){}
/**
* model의 get_list()로 목록 불러오기
*/
public function lists() {
// Board_model에서 get_list()로 list를 받아와 data['list']로 저장합니다.
$data['list'] = $this -> Board_model -> get_list();
// 저장한 data를 view인 board_view에 넘겨줍니다.
// view의 경로로 board 폴더 안에 넣어주었습니다.
$this -> load -> view('board/board_view', $data);
}
}
여기서 __construct() 함수는 생성자 입니다.
기본적으로 controller가 실행될 때 model 'Board_model.php'가 load되도록 설정해주었습니다.
index() 함수는 주소에서 method가 생략되었을 때 기본으로 실행됩니다.
일단 아무것도 넣지 않았습니다.
2. Controller에서 model로 잡아준 Board_model.php 에서 select구문을 통해 전체 list를 불러옵니다.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Board_model extends CI_Model{
/**
* Board_model constructor. : 생성자
*/
function __construct()
{
parent::__construct();
// database load
$this->load->database();
}
/**
* 전체 조회
* @param string $table
* @return mixed
*/
function get_list($table='board'){
// 전체조회 sql
$sql = "select * from $table order by id desc";
// sql 구문을 통한 query 실행
$query = $this->db->query($sql);
// query 실행 결과를 result 변수에 담아서 return 합니다.
$result = $query->result();
return $result;
}
}
Controller에서 모델을 불러왔듯이 생성자를 통해 Database를 load합니다.
이후 get_list 함수를 만들어 전체 조회한 데이터를 return 해줍니다.
3. 마지막으로 view에서 list를 받아 출력해줍니다. ( board/board_view.php )
<html>
<head>
<title>CodeIgniter 전체 조회</title>
</head>
<body>
<table>
<tr>
<th>번호</th>
<th>제목</th>
<th>작성자</th>
<th>조회수</th>
<th>작성일</th>
</tr>
<?php
// 받아온 리스트 : $list
// 단일 항목 : $item
foreach($list as $item){
?>
<tr><!-- 단일 항목인 $item으로 해당하는 값을 출력합니다. -->
<td><?php echo $item -> id;?></td>
<td><?php echo $item -> title;?></td>
<td><?php echo $item -> user_name;?></td>
<td><?php echo $item -> view_cnt;?></td>
<td><?php echo $item -> enroll_date;?></td>
</tr>
<?php
}
?>
</table>
</body>
</html>
4. 출력 결과
다음과 같이 출력되는 것을 확인할 수 있었습니다.
※ 주소는 localhost/index.php/board/lists 인데 기본적으로 설정된 localhost/index.php 주소에
controller의 이름인 board와 controller의 함수 lists로 맵핑됩니다.
※ 주소값에 index.php를 다른 것으로 바꾸는 방법은 차차 올리겠습니다!
'JetBrain > PHP Storm & Codeigniter' 카테고리의 다른 글
[PHP Storm] Form Helper ( form_open() 함수 ) (0) | 2020.06.10 |
---|---|
[PHP Storm] 단축키 정리 (0) | 2020.06.10 |
[Codeigniter] MVC 모델 - Controller에 대해서 (0) | 2020.06.05 |
[Codeigniter] Database 설정하기 (Mysql 5.7) (0) | 2020.06.05 |
PHP Storm과 Mysql(AWS EC2) 연결 (2) | 2020.06.04 |