반응형
1. 구현을 위한 데이터베이스 테이블
예제 구현을 위해 테이블을 생성합니다.
CREATE TABLE `ss_board` (
`ss_board_id` INT(11) NOT NULL AUTO_INCREMENT,
`subject` VARCHAR(255) NOT NULL COMMENT '글 제목' COLLATE 'utf8mb4_general_ci',
`contents` LONGTEXT NOT NULL COMMENT '글 내용' COLLATE 'utf8mb4_general_ci',
`writer` VARCHAR(30) NOT NULL DEFAULT '' COMMENT '작성자' COLLATE 'utf8mb4_general_ci',
`email` VARCHAR(150) NOT NULL DEFAULT '' COMMENT '이메일' COLLATE 'utf8mb4_general_ci',
`reg_dt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '등록일시',
`up_dt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`ss_board_id`) USING BTREE
)
COMMENT='개발자 성공 보드~!!\r\n엄청난 부자가 된다~!'
COLLATE='utf8mb4_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=3
;
2. 페이지네이션 모델 구현
<?php
namespace App\Models;
use CodeIgniter\Model;
class BoardModel extends Model
{
protected $table = 'ss_board';
protected $primaryKey = 'ss_board_id';
public function get_all_data( int $cnt = 20 )
{
$this->builder()
->orderBy('ss_board_id','DESC');
return [
'data' => $this->paginate($cnt),
'pager' => $this->pager
];
}
}
$this->paginate() 메소드에서 데이터를 반환합니다. 기본 데이터 row는 20개로 설정이 되어 있습니다.
매개변수를 정수 값으로 입력을 하면 입력한 값만큼 데이터가 반환합니다.
3. 페이지네이션 컨트롤러 구현
BoardModel에서 구현한 부분을 컨트롤러에서 호출을 합니다.
<?php
namespace App\Controllers;
use App\Controllers\BaseController;
use App\Models\BoardModel;
class Board extends BaseController
{
protected $bm;
public function __construct()
{
$this->bm = new BoardModel();
}
public function index()
{
$bm = $this->bm->get_all_data();
$data = [
'board_data' => $bm['data'],
'pager' => $bm['pager']
];
echo view("board/list",$data);
}
}
4. 페이지네이션 뷰 구현
<div class="container">
<div class="row mt-2">
<div class="col-md-3">
<div class="input-group mb-3">
<input type="text" class="form-control" placeholder="게시글 검색" aria-describedby="button-addon2">
<button class="btn btn-outline-secondary" type="button" id="button-addon2">검색</button>
</div>
</div>
<div class="col-6 col-md-9 text-end" >
<button type="button" class="btn btn-outline-secondary">글쓰기</button>
</div>
</div>
<table class="table table-hover table-sm">
<thead>
<tr>
<th scope="col">제목</td>
<th scope="col">글쓴이</td>
<th scope="col">등록일시</td>
<th scope="col">수정일시</td>
</tr>
</thead>
<tbody>
<?php foreach( $board_data as $data ): ?>
<tr>
<td><?=$data['subject']?></td>
<td><?=$data['writer']?></td>
<td><?=$data['reg_dt']?></td>
<td><?=$data['up_dt']?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php echo $pager->links(); ?>
</div>
$pager->links()메소드는 페이지링크를 출력하는 메소드입니다. 구현을 잘하셨다면 아래 그림과 같이 페이지링크가 출력됩니다.
5. 커스텀 페이지네이션 만들기
본 예제는 페이징처리를 위한 간편 구현입니다. 디자인 변경이 궁금하신 분들은 아래 링크를 참고 바랍니다.
https://lifefun.tistory.com/71
반응형
'소프트웨어 개발 > PHP' 카테고리의 다른 글
[코드이그나이터4] 데이터를 1개의 행으로 가져오고 싶을 경우 getRow(); (0) | 2022.02.13 |
---|---|
[코드이그나이터4] 페이지네이션 뷰 만들기/뷰 생성 (0) | 2022.02.12 |
[코드이그나이터4] 뷰 페이지 view 레이아웃 잡기 (0) | 2022.02.12 |
[코드이그나이터4] CodeIgniter\Database\BaseResult::getResult() as shown below: (0) | 2022.02.10 |
PHP - 한글만 입력했는지 체크 (0) | 2022.02.09 |
댓글