Projek Sederhana
đģ Proyek Sederhana CodeIgniter 4 (CRUD Lengkap)
Berikut contoh projek sederhana CodeIgniter 4 (CI4) yang menampilkan landing page dengan data dari database, serta fitur Tambah, Edit, dan Hapus data produk. Tampilan responsif dan bisa digunakan untuk pembelajaran CRUD dasar.
đ 1. Struktur Folder
app/
ââ Controllers/
â ââ ProdukController.php
ââ Models/
â ââ ProdukModel.php
ââ Views/
â ââ layout/
â â ââ header.php
â â ââ footer.php
â ââ landingpage.php
â ââ tambah_produk.php
â ââ edit_produk.php
â ââ tentang.php
đ§Š 2. Database (MySQL)
CREATE DATABASE db_toko;
USE db_toko;
CREATE TABLE produk (
id INT AUTO_INCREMENT PRIMARY KEY,
nama_produk VARCHAR(100),
harga INT
);
INSERT INTO produk (nama_produk, harga) VALUES
('Buku Tulis', 5000),
('Pensil 2B', 3000);
đ§ 3. Routes â app/Config/Routes.php
$routes->get('/', 'ProdukController::index');
$routes->get('/tentang', 'ProdukController::tentang');
$routes->get('/produk/tambah', 'ProdukController::tambah');
$routes->post('/produk/simpan', 'ProdukController::simpan');
$routes->get('/produk/edit/(:num)', 'ProdukController::edit/$1');
$routes->post('/produk/update/(:num)', 'ProdukController::update/$1');
$routes->get('/produk/hapus/(:num)', 'ProdukController::hapus/$1');
đ§ 4. Model â app/Models/ProdukModel.php
<?php
namespace App\Models;
use CodeIgniter\Model;
class ProdukModel extends Model {
protected $table = 'produk';
protected $primaryKey = 'id';
protected $allowedFields = ['nama_produk', 'harga'];
}
đī¸ 5. Controller â app/Controllers/ProdukController.php
<?php
namespace App\Controllers;
use App\Models\ProdukModel;
class ProdukController extends BaseController {
public function index() {
$model = new ProdukModel();
$data['produk'] = $model->findAll();
return view('landingpage', $data);
}
public function tentang() {
return view('tentang');
}
public function tambah() {
return view('tambah_produk');
}
public function simpan() {
$model = new ProdukModel();
$model->save([
'nama_produk' => $this->request->getPost('nama_produk'),
'harga' => $this->request->getPost('harga')
]);
return redirect()->to('/');
}
public function edit($id) {
$model = new ProdukModel();
$data['produk'] = $model->find($id);
return view('edit_produk', $data);
}
public function update($id) {
$model = new ProdukModel();
$model->update($id, [
'nama_produk' => $this->request->getPost('nama_produk'),
'harga' => $this->request->getPost('harga')
]);
return redirect()->to('/');
}
public function hapus($id) {
$model = new ProdukModel();
$model->delete($id);
return redirect()->to('/');
}
}
đ§ą 6. Header & Footer (layout)
app/Views/layout/header.php
<div style="background:#0d47a1;padding:10px;text-align:center;">
<h2 style="color:white;margin:0;">đ Toko Delta Marena</h2>
<div style="margin-top:10px;">
<a href="/" style="color:white;margin:0 15px;text-decoration:none;">Home</a>
<a href="/produk/tambah" style="color:white;margin:0 15px;text-decoration:none;">Tambah Produk</a>
<a href="/tentang" style="color:white;margin:0 15px;text-decoration:none;">Tentang</a>
</div>
</div>
app/Views/layout/footer.php
<div style="background:#0d47a1;color:white;text-align:center;padding:10px;margin-top:20px;">
<p style="margin:0;">© <?= date('Y'); ?> Delta Marena</p>
</div>
đ 7. View Landing Page â landingpage.php
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>Landing Page</title>
</head>
<body style="font-family:'Poppins',sans-serif;margin:0;background:#e3f2fd;">
<?= view('layout/header'); ?>
<div style="max-width:600px;margin:20px auto;padding:20px;background:white;border-radius:12px;">
<h2 style="color:#0d47a1;text-align:center;">Daftar Produk</h2>
<table style="width:100%;border-collapse:collapse;">
<thead>
<tr style="background:#bbdefb;">
<th style="padding:8px;border:1px solid #ccc;">Nama</th>
<th style="padding:8px;border:1px solid #ccc;">Harga</th>
<th style="padding:8px;border:1px solid #ccc;">Aksi</th>
</tr>
</thead>
<tbody>
<?php foreach($produk as $p): ?>
<tr>
<td style="padding:8px;border:1px solid #ccc;"><?= esc($p['nama_produk']); ?></td>
<td style="padding:8px;border:1px solid #ccc;">Rp <?= number_format($p['harga'],0,',','.'); ?></td>
<td style="padding:8px;border:1px solid #ccc;text-align:center;">
<a href="/produk/edit/<?= $p['id']; ?>" style="color:#1565c0;text-decoration:none;">Edit</a> |
<a href="/produk/hapus/<?= $p['id']; ?>" style="color:#d32f2f;text-decoration:none;" onclick="return confirm('Yakin hapus?')">Hapus</a>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?= view('layout/footer'); ?>
</body>
</html>
â 8. View Tambah Produk â tambah_produk.php
<form action="/produk/simpan" method="post" style="max-width:500px;margin:auto;padding:20px;background:white;border-radius:12px;">
<h2 style="text-align:center;color:#2e7d32;">Tambah Produk</h2>
<label>Nama Produk</label>
<input type="text" name="nama_produk" style="width:100%;padding:8px;margin:8px 0;border:1px solid #ccc;border-radius:6px;" required>
<label>Harga</label>
<input type="number" name="harga" style="width:100%;padding:8px;margin:8px 0;border:1px solid #ccc;border-radius:6px;" required>
<button type="submit" style="background:#2e7d32;color:white;padding:10px 20px;border:none;border-radius:8px;">Simpan</button>
</form>
âī¸ 9. View Edit Produk â edit_produk.php
<form action="/produk/update/<?= $produk['id']; ?>" method="post" style="max-width:500px;margin:auto;padding:20px;background:white;border-radius:12px;">
<h2 style="text-align:center;color:#ef6c00;">Edit Produk</h2>
<label>Nama Produk</label>
<input type="text" name="nama_produk" value="<?= esc($produk['nama_produk']); ?>" style="width:100%;padding:8px;margin:8px 0;border:1px solid #ccc;border-radius:6px;" required>
<label>Harga</label>
<input type="number" name="harga" value="<?= esc($produk['harga']); ?>" style="width:100%;padding:8px;margin:8px 0;border:1px solid #ccc;border-radius:6px;" required>
<button type="submit" style="background:#ef6c00;color:white;padding:10px 20px;border:none;border-radius:8px;">Update</button>
</form>
âšī¸ 10. View Tentang Kami â tentang.php
<div style="max-width:600px;margin:auto;padding:20px;background:white;border-radius:12px;">
<h2 style="color:#0d47a1;text-align:center;">Tentang Kami</h2>
<p style="text-align:justify;">
Kami adalah toko sederhana bernama <strong>Delta Marena</strong> yang menjual perlengkapan sekolah.
Sistem ini dibuat untuk latihan CRUD di CodeIgniter 4.
</p>
</div>
â Hasil Akhir
- Home â Menampilkan daftar produk (bisa Edit & Hapus)
- Tambah Produk â Form tambah data
- Edit Produk â Mengubah data
- Tentang Kami â Halaman statis
đ Proyek ini siap kamu kembangkan menjadi aplikasi toko, inventaris, atau katalog produk.
