일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 온라인유통
- 디지키
- 회원관리
- 웹교적부
- 홈페이지제작
- 웹erp
- 회원앱
- 회원명부
- 보안시스템
- 단체앱
- 부품정보
- 웹명부
- 전자결재
- 자재정보
- 전자부품전
- 쇼핑몰
- 전자부품
- 전자부품유통
- composer #codeigniter #codeigniter4
- VirtualBox
- 사내정보
- 교회앱
- 교적부
- 단체홈페이지
- digikey
- 교회전산
- 명부
- 버츄어머신
- 교회홈페이지
- 디바이스마트
Archives
- Today
- Total
미디어 온 연구실
예제2. CodeIgniter 4 부트스트랩 모달이 포함 된 CRUD 본문
1. 테이블 생성
이번 진행에서는 "category"및 "product"라는 두 개의 테이블이 필요합니다.
"category"테이블을 만들려면 다음 쿼리를 실행하여 테이블을 생성합니다.
CREATE TABLE category(
category_id INT PRIMARY KEY AUTO_INCREMENT,
category_name VARCHAR(50)
)ENGINE=INNODB;
또한 다음 쿼리를 실행하여 "product"테이블을 만듭니다.
CREATE TABLE product(
product_id INT PRIMARY KEY AUTO_INCREMENT,
product_name VARCHAR(100),
product_price INT,
product_category_id INT
)ENGINE=INNODB;
2. 카테고리 및 제품에 테스트 데이터 입력
테스트용 샘플 데이터를 "category"테이블과 "product"테이블에 등록합니다.
다음 쿼리를 실행하여 "category"테이블에 3 개의 데이터 레코드를 입력합니다.
INSERT INTO category(category_name)
VALUES ('Books'),('Electronics'),('Fashions');
다음으로 아래 쿼리를 실행하여 일부 데이터를 "product"테이블에 2 개의 데이터 레코드를 입력합니다.
INSERT INTO product(product_name,product_price,product_category_id)
VALUES ('The 4 Hour Workweek','76000','1'),('CodeIgniter Cheat Sheet','50000','1');
3. Bootstrap 설치
다음 사이트에서 “Bootstrap”파일을 내려받습니다.
https://getbootstrap.com/docs/4.4/getting-started/download/
내려 받은 “Bootstrap”파일을 "public"폴더의 css와 js 하위 폴더에 업로드합니다..
다음으로 https://code.jquery.com/jquery-3.4.1.min.js를 내려 받은 후, "public/js"폴더에 "jquery.min.js"라는 파일을 올립니다.
4. 모델 파일 만들기
"app/Models"폴더에 "Product_model.php"라는 모델 파일을 만들고 다음 코드를 입력합니다.
<?php
namespace App\Models;
use CodeIgniter\Model;
class Product_model extends Model
{
public function getCategory()
{
$builder = $this->db->table('category');
return $builder->get();
}
public function getProduct()
{
$builder = $this->db->table('product');
$builder->select('*');
$builder->join('category', 'category_id = product_category_id','left');
return $builder->get();
}
public function saveProduct($data){
$query = $this->db->table('product')->insert($data);
return $query;
}
public function updateProduct($data, $id)
{
$query = $this->db->table('product')->update($data, array('product_id' => $id));
return $query;
}
public function deleteProduct($id)
{
$query = $this->db->table('product')->delete(array('product_id' => $id));
return $query;
}
}
5.컨트롤러 파일 만들기
"app/Controllers"폴더에 "Product.php"라는 컨트롤러 파일을 만든 후 다음 코드를 입력합니다.
<?php
namespace App\Controllers;
use CodeIgniter\Controller;
use App\Models\Product_model;
class Product extends Controller
{
public function index()
{
$model = new Product_model();
$data['product'] = $model->getProduct()->getResult();
$data['category'] = $model->getCategory()->getResult();
echo view('product_view', $data);
}
public function save()
{
$model = new Product_model();
$data = array(
'product_name' => $this->request->getPost('product_name'),
'product_price' => $this->request->getPost('product_price'),
'product_category_id' => $this->request->getPost('product_category'),
);
$model->saveProduct($data);
return redirect()->to('/product');
}
public function update()
{
$model = new Product_model();
$id = $this->request->getPost('product_id');
$data = array(
'product_name' => $this->request->getPost('product_name'),
'product_price' => $this->request->getPost('product_price'),
'product_category_id' => $this->request->getPost('product_category'),
);
$model->updateProduct($data, $id);
return redirect()->to('/product');
}
public function delete()
{
$model = new Product_model();
$id = $this->request->getPost('product_id');
$model->deleteProduct($id);
return redirect()->to('/product');
}
}
6. 뷰 파일 만들기
"app/Views"폴더에 "product_view.php"라는보기 파일을 만들고 다음 코드를 입력합니다.
<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Product Lists</title>
<link rel="stylesheet" href="/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<h3>Product Lists</h3>
<button type="button" class="btn btn-success mb-2" data-toggle="modal" data-target="#addModal">Add New</button>
<table class="table table-striped">
<thead>
<tr>
<th>Product Name</th>
<th>Price</th>
<th>Category</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php foreach($product as $row):?>
<tr>
<td><?= $row->product_name;?></td>
<td><?= $row->product_price;?></td>
<td><?= $row->category_name;?></td>
<td>
<a href="#" class="btn btn-info btn-sm btn-edit" data-id="<?= $row->product_id;?>" data-name="<?= $row->product_name;?>" data-price="<?= $row->product_price;?>" data-category_id="<?= $row->product_category_id;?>">Edit</a>
<a href="#" class="btn btn-danger btn-sm btn-delete" data-id="<?= $row->product_id;?>">Delete</a>
</td>
</tr>
<?php endforeach;?>
</tbody>
</table>
</div>
<!-- Modal Add Product-->
<form action="/product/save" method="post">
<div class="modal fade" id="addModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Add New Product</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div class="form-group">
<label>Product Name</label>
<input type="text" class="form-control" name="product_name" placeholder="Product Name">
</div>
<div class="form-group">
<label>Price</label>
<input type="text" class="form-control" name="product_price" placeholder="Product Price">
</div>
<div class="form-group">
<label>Category</label>
<select name="product_category" class="form-control">
<option value="">-Select-</option>
<?php foreach($category as $row):?>
<option value="<?= $row->category_id;?>"><?= $row->category_name;?></option>
<?php endforeach;?>
</select>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="submit" class="btn btn-primary">Save</button>
</div>
</div>
</div>
</div>
</form>
<!-- End Modal Add Product-->
<!-- Modal Edit Product-->
<form action="/product/update" method="post">
<div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Edit Product</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<div class="form-group">
<label>Product Name</label>
<input type="text" class="form-control product_name" name="product_name" placeholder="Product Name">
</div>
<div class="form-group">
<label>Price</label>
<input type="text" class="form-control product_price" name="product_price" placeholder="Product Price">
</div>
<div class="form-group">
<label>Category</label>
<select name="product_category" class="form-control product_category">
<option value="">-Select-</option>
<?php foreach($category as $row):?>
<option value="<?= $row->category_id;?>"><?= $row->category_name;?></option>
<?php endforeach;?>
</select>
</div>
</div>
<div class="modal-footer">
<input type="hidden" name="product_id" class="product_id">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="submit" class="btn btn-primary">Update</button>
</div>
</div>
</div>
</div>
</form>
<!-- End Modal Edit Product-->
<!-- Modal Delete Product-->
<form action="/product/delete" method="post">
<div class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Delete Product</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<h4>Are you sure want to delete this product?</h4>
</div>
<div class="modal-footer">
<input type="hidden" name="product_id" class="productID">
<button type="button" class="btn btn-secondary" data-dismiss="modal">No</button>
<button type="submit" class="btn btn-primary">Yes</button>
</div>
</div>
</div>
</div>
</form>
<!-- End Modal Delete Product-->
<script src="/js/jquery.min.js"></script>
<script src="/js/bootstrap.bundle.min.js"></script>
<script>
$(document).ready(function(){
// get Edit Product
$('.btn-edit').on('click',function(){
// get data from button edit
const id = $(this).data('id');
const name = $(this).data('name');
const price = $(this).data('price');
const category = $(this).data('category_id');
// Set data to Form Edit
$('.product_id').val(id);
$('.product_name').val(name);
$('.product_price').val(price);
$('.product_category').val(category).trigger('change');
// Call Modal Edit
$('#editModal').modal('show');
});
// get Delete Product
$('.btn-delete').on('click',function(){
// get data from button edit
const id = $(this).data('id');
// Set data to Form Edit
$('.productID').val(id);
// Call Modal Edit
$('#deleteModal').modal('show');
});
});
</script>
</body>
</html>
7. 동작 데스트 예제
'예제로 배우는 코드이그나이터4' 카테고리의 다른 글
예제4. Ajax를 사용한 국가 주 그리고 도시를 선택하는 드롭다운구현 (0) | 2021.07.11 |
---|---|
예제3. CodeIgniter 4 입력 폼2 (0) | 2021.07.11 |
예제1. CodeIgniter 4 입력 폼 (1) | 2021.07.06 |
Codeigniter 4의 Controller, Model, View 만들기 예제 (0) | 2021.07.05 |
Codeigniter 4 의 폴더 및 디렉토리 구조 (0) | 2021.07.04 |
Comments