Project PHP: Belajar MVC dengan Membuat Aplikasi CRUD Sederhana
PHP adalah bahasa pemrograman server-side yang sangat populer untuk pengembangan web. Salah satu konsep penting dalam pengembangan aplikasi web adalah MVC (Model-View-Controller), yang membantu mengorganisir kode dengan baik dan memisahkan logika bisnis, tampilan, dan kontrol.
Dalam artikel ini, kita akan membahas cara membuat Aplikasi CRUD (Create, Read, Update, Delete) Sederhana menggunakan PHP dengan Arsitektur MVC. Project ini cocok untuk pemula yang ingin memahami konsep MVC sekaligus belajar membuat aplikasi web yang terstruktur.
Apa Itu MVC?
MVC adalah pola desain (design pattern) yang memisahkan aplikasi menjadi tiga komponen utama:
- Model: Bertanggung jawab untuk mengelola data dan logika bisnis.
- View: Bertanggung jawab untuk menampilkan data ke pengguna (tampilan).
- Controller: Bertanggung jawab untuk mengatur alur aplikasi dan menghubungkan Model dengan View.
Dengan menggunakan MVC, kode menjadi lebih terorganisir, mudah dikelola, dan scalable.
Tools yang Dibutuhkan
Untuk membuat aplikasi ini, Anda memerlukan:
- PHP: Pastikan PHP sudah terinstal di komputer Anda.
- Text Editor atau IDE: Seperti Visual Studio Code, Sublime Text, atau PHPStorm.
- Web Server: Seperti Apache atau Nginx. Anda juga bisa menggunakan XAMPP atau Laragon untuk mempermudah.
- Database: Kita akan menggunakan MySQL untuk menyimpan data.
Langkah-Langkah Membuat Aplikasi CRUD MVC
1. Membuat Struktur Folder MVC
Pertama, buat struktur folder untuk aplikasi MVC Anda. Struktur folder yang umum digunakan adalah:
mvc-crud/ │ ├── app/ │ ├── controllers/ │ ├── models/ │ └── views/ │ ├── public/ │ └── index.php │ └── config/ └── database.php
2. Membuat File Konfigurasi Database
Buat file database.php
di folder config
untuk mengatur koneksi ke database.
<?php
// config/database.php
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASS', '');
define('DB_NAME', 'mvc_crud');
?>
3. Membuat Model
Model bertanggung jawab untuk mengelola data. Buat file UserModel.php
di folder app/models
.
<?php
// app/models/UserModel.php
class UserModel {
private $db;
public function __construct() {
$this->db = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if ($this->db->connect_error) {
die("Koneksi database gagal: " . $this->db->connect_error);
}
}
public function getUsers() {
$query = "SELECT * FROM users";
$result = $this->db->query($query);
return $result->fetch_all(MYSQLI_ASSOC);
}
public function getUserById($id) {
$query = "SELECT * FROM users WHERE id = ?";
$stmt = $this->db->prepare($query);
$stmt->bind_param("i", $id);
$stmt->execute();
$result = $stmt->get_result();
return $result->fetch_assoc();
}
public function addUser($name, $email) {
$query = "INSERT INTO users (name, email) VALUES (?, ?)";
$stmt = $this->db->prepare($query);
$stmt->bind_param("ss", $name, $email);
return $stmt->execute();
}
public function updateUser($id, $name, $email) {
$query = "UPDATE users SET name = ?, email = ? WHERE id = ?";
$stmt = $this->db->prepare($query);
$stmt->bind_param("ssi", $name, $email, $id);
return $stmt->execute();
}
public function deleteUser($id) {
$query = "DELETE FROM users WHERE id = ?";
$stmt = $this->db->prepare($query);
$stmt->bind_param("i", $id);
return $stmt->execute();
}
}
?>
4. Membuat Controller
Controller bertanggung jawab untuk mengatur alur aplikasi. Buat file UserController.php
di folder app/controllers
.
<?php
// app/controllers/UserController.php
require_once '../models/UserModel.php';
class UserController {
private $model;
public function __construct() {
$this->model = new UserModel();
}
public function index() {
$users = $this->model->getUsers();
require_once '../views/users/index.php';
}
public function add() {
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = $_POST['name'];
$email = $_POST['email'];
$this->model->addUser($name, $email);
header('Location: index.php');
} else {
require_once '../views/users/add.php';
}
}
public function edit($id) {
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = $_POST['name'];
$email = $_POST['email'];
$this->model->updateUser($id, $name, $email);
header('Location: index.php');
} else {
$user = $this->model->getUserById($id);
require_once '../views/users/edit.php';
}
}
public function delete($id) {
$this->model->deleteUser($id);
header('Location: index.php');
}
}
?>
5. Membuat View
View bertanggung jawab untuk menampilkan data ke pengguna. Buat file index.php
, add.php
, dan edit.php
di folder app/views/users
.
index.php:
<!-- app/views/users/index.php --> <!DOCTYPE html> <html lang="id"> <head> <meta charset="UTF-8"> <title>Daftar Pengguna</title> </head> <body> <h1>Daftar Pengguna</h1> <a href="add.php">Tambah Pengguna</a> <table border="1"> <tr> <th>ID</th> <th>Nama</th> <th>Email</th> <th>Aksi</th> </tr> <?php foreach ($users as $user): ?> <tr> <td><?php echo $user['id']; ?></td> <td><?php echo $user['name']; ?></td> <td><?php echo $user['email']; ?></td> <td> <a href="edit.php?id=<?php echo $user['id']; ?>">Edit</a> <a href="index.php?action=delete&id=<?php echo $user['id']; ?>">Hapus</a> </td> </tr> <?php endforeach; ?> </table> </body> </html>
add.php:
<!-- app/views/users/add.php --> <!DOCTYPE html> <html lang="id"> <head> <meta charset="UTF-8"> <title>Tambah Pengguna</title> </head> <body> <h1>Tambah Pengguna</h1> <form action="add.php" method="POST"> <label for="name">Nama:</label> <input type="text" id="name" name="name" required> <br> <label for="email">Email:</label> <input type="email" id="email" name="email" required> <br> <button type="submit">Simpan</button> </form> </body> </html>
edit.php:
<!-- app/views/users/edit.php --> <!DOCTYPE html> <html lang="id"> <head> <meta charset="UTF-8"> <title>Edit Pengguna</title> </head> <body> <h1>Edit Pengguna</h1> <form action="edit.php?id=<?php echo $user['id']; ?>" method="POST"> <label for="name">Nama:</label> <input type="text" id="name" name="name" value="<?php echo $user['name']; ?>" required> <br> <label for="email">Email:</label> <input type="email" id="email" name="email" value="<?php echo $user['email']; ?>" required> <br> <button type="submit">Simpan</button> </form> </body> </html>
6. Membuat File Entry Point
Buat file index.php
di folder public
sebagai entry point aplikasi.
<?php
// public/index.php
require_once '../app/controllers/UserController.php';
$controller = new UserController();
$action = isset($_GET['action']) ? $_GET['action'] : 'index';
if ($action === 'add') {
$controller->add();
} elseif ($action === 'edit') {
$id = $_GET['id'];
$controller->edit($id);
} elseif ($action === 'delete') {
$id = $_GET['id'];
$controller->delete($id);
} else {
$controller->index();
}
?>
Cara Menjalankan Aplikasi
- Buat database
mvc_crud
dan tabelusers
di MySQL:CREATE DATABASE mvc_crud; USE mvc_crud; CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(100) NOT NULL );
- Jalankan aplikasi dengan mengakses
http://localhost/mvc-crud/public/index.php
di browser.
Kesimpulan
Membuat Aplikasi CRUD Sederhana dengan PHP dan MVC adalah project yang bagus untuk mempelajari konsep MVC. Anda tidak hanya belajar tentang pemisahan logika bisnis, tampilan, dan kontrol, tetapi juga memahami cara membuat aplikasi web yang terstruktur dan mudah dikelola. Selamat mencoba, dan jangan ragu untuk mengembangkan project ini lebih lanjut!