1. Struktur Database
Pertama, buat tabel products untuk menyimpan data produk dan stoknya.
CREATE TABLE products (
id_product INT AUTO_INCREMENT PRIMARY KEY,
kode_product VARCHAR(10)
nama_product VARCHAR(50) NOT NULL,
harga_ INT NOT NULL,
stok INT NOT NULL DEFAULT 0
);
Kolom stok bertipe integer untuk menampung jumlah stok yang tersedia.
2. Membuat Controller Product
Controller akan menangani input pengguna, menampilkan halaman, serta melakukan proses tambah stok.
app/Controllers/Product.php
namespace App\Controllers;
class Product extends BaseController{
protected $db;
public function __construct(){
$this->db = \Config\Database::connect();
}
public function index(): string{
$product = $this->db->table('product')->get()->getResult();
return view('product/index',['data'=>$product]);
}
public function simpan_product(){
$kode = $this->request->getPost("kode_product");
$nama = $this->request->getPost("nama_product");
$harga = $this->request->getPost("harga");
$cekKode = $this->db->table("product")
->select("kode_product")
->where("kode_product",$kode)
->get()
->getRow();
if($cekKode !== null){
$err = ['error'=>true, 'message'=>'kode product tidak valid !!'];
return view("product/tambah",$err);
}
if($harga < 1 || $harga == ""){
$err = ['error'=>true, 'message'=>'harga tidak boleh Nol "0" !!'];
return view("product/tambah",$err);
}
//simpan
$data = [
"kode_product"=>$kode,
"nama_product"=>$nama,
"harga"=>$harga,
"stok"=>0
];
$this->db->table('product')->insert($data);
return redirect()->to("product");
}
public function stok_tambah($err=null){
$data['data'] = $this->db->table('product')->get()->getResult();
if($err !== null){
$data = array_merge($data,$err);
return view('product/tambah-stok',$data);
}
return view('product/tambah-stok',$data);
}
public function stok_simpan(){
$product = $this->request->getPost('id_product');
$stok = $this->request->getPost('stok');
//cek error
if($product == 'n'){
$err = ['error'=>true,'message'=>'Silahkan pilih kode product !!'];
return $this->stok_tambah($err);
}
if($stok == '' || $stok < 1){
$err = ['error'=>true,'message'=>'Inputkan Stok dengan benar !!'];
return $this->stok_tambah($err);
}
//berhasil
$data = [
'stok'=>$stok
];
$this->db->table('product')->set('stok','stok + '.$stok,false)
->where('id_product',$product)
->update();
return redirect()->to('/product');
}
}
Penjelasan:
- index() : menampilkan data product
- simpan_product() : menyimpan data product ke database
- stok_tambah : menampilkan form tambah stok
- stok_simpan() : mengupdate stok product berdasarkan kode product yang dipilih
3. Membuat View Daftar Produk
app/Views/product/index.php
4. Membuat View Form Tambah Stok
app/Views/product/add_stock.php
Form ini hanya membutuhkan input angka untuk menambah stok produk.
5. Routing
Tambahkan rute untuk controller product.
app/Config/Routes.php
//products
$routes->get('/product', 'Product::index');
$routes->get('/product/tambah', function(){
return view('product/tambah');
});
$routes->post('/product/simpan', 'Product::simpan_product');
//stok
$routes->get('/product/stok/tambah','Product::stok_tambah');
$routes->post('product/stok/simpan','Product::stok_simpan');
6. Membuat View Form tambah Product
app/Views/product/tambah.php
7. Cara Kerja Sistem
Ketika admin ingin menambah stok:
- Akses browser dengan endpoint `/product`
- Klik tambah product, utuk menambahkan data product
- Klik tambah stok, untuk mengubah stok product
- Masukan jumlah stok sesuai kode product
- sistem akan update stok product,stok lama akan ditambahkan dengan stok baru
Kesimpulan
Fitur ini dapat dikembangkan lebih lanjut, misalnya dengan catatan history stok, pengurangan stok otomatis saat transaksi, atau validasi lebih kompleks.
untuk melihat artikel lain, bisa klik Disini

No comments:
Post a Comment