Bagaimana cara saya membuat sebuah Website CRUD di PHP Codeigniter 4 dengan cepat
Tags: webdev, beginners, programming, tutorial
Published: 2024-03-09 10:30:43

CRUD adalah salah satu hal mendasar dalam pengembangan aplikasi web. Dengan menggunakan PHP CodeIgniter 4, Anda dapat dengan mudah membuat operasi CRUD dan terhubung ke database dengan cepat. Pada tutorial ini, saya akan memandu Anda langkah demi langkah untuk membuat CRUD sederhana dengan PHP CodeIgniter 4.

**Langkah 1: Persiapan Awal**

Pastikan Anda telah menginstal PHP, Composer, dan sudah menyiapkan lingkungan pengembangan untuk CodeIgniter 4. Jika belum, Anda dapat mengikuti petunjuk instalasi resmi di situs web CodeIgniter.

**Langkah 2: Membuat Database**

Mulailah dengan membuat database di server MySQL atau database lainnya yang Anda gunakan. Misalnya, kita akan membuat database dengan nama crud_example.

```
CREATE DATABASE crud_example;
```

**Langkah 3: Instalasi CodeIgniter 4**

Selanjutnya, buat proyek CodeIgniter 4 menggunakan Composer dengan perintah berikut:

```
composer create-project codeigniter4/appstarter nama_proyek
```
Masuk ke direktori proyek Anda:

```
cd nama_proyek
```

**Langkah 4: Konfigurasi Database**

Konfigurasi koneksi database di file `.env`. Buka file `.env` dan sesuaikan informasi koneksi database Anda:

```
database.default.hostname = localhost
database.default.database = crud_example
database.default.username = username_database
database.default.password = password_database
database.default.DBDriver = MySQLi
```

**Langkah 5: Membuat Model**

Buatlah model untuk mengelola data di dalam database. Misalnya, buat model dengan nama `ProductModel`:

```
<?php

namespace App\Models;

use CodeIgniter\Model;

class ProductModel extends Model
{
    protected $table = 'products';
    protected $primaryKey = 'id';
    protected $allowedFields = ['name', 'price', 'description'];
}
```

**Langkah 6: Membuat Controller**

Selanjutnya, buatlah controller untuk menangani permintaan pengguna dan menghubungkannya ke model yang sesuai. Misalnya, buatlah controller dengan nama `ProductController`:

```
public function create()
{
    return view('product/create');
}

public function store()
{
    $model = new ProductModel();
    $data = [
        'name' => $this->request->getVar('name'),
        'price' => $this->request->getVar('price'),
        'description' => $this->request->getVar('description')
    ];
    $model->insert($data);
    return redirect()->to('/product');
}

public function edit($id)
{
    $model = new ProductModel();
    $data['product'] = $model->find($id);
    return view('product/edit', $data);
}

public function update($id)
{
    $model = new ProductModel();
    $data = [
        'name' => $this->request->getVar('name'),
        'price' => $this->request->getVar('price'),
        'description' => $this->request->getVar('description')
    ];
    $model->update($id, $data);
    return redirect()->to('/product');
}

public function delete($id)
{
    $model = new ProductModel();
    $model->delete($id);
    return redirect()->to('/product');
}


```

**Langkah 7: Membuat Tampilan**

Terakhir, buat tampilan untuk menampilkan data dan mengelola CRUD. Misalnya, buat tampilan dengan nama `index.php`, `create.php` dan `edit.php` di dalam folder `views/product/`.

```
<!-- index.php -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Product List</title>
</head>
<body>
    <h1>Product List</h1>
    <a href="/product/create">Add Product</a>
    <table border="1">
        <tr>
            <th>Name</th>
            <th>Price</th>
            <th>Description</th>
            <th>Actions</th>
        </tr>
        <?php foreach ($products as $product): ?>
            <tr>
                <td><?= $product['name'] ?></td>
                <td><?= $product['price'] ?></td>
                <td><?= $product['description'] ?></td>
                <td>
                    <a href="/product/edit/<?= $product['id'] ?>">Edit</a> | 
                    <a href="/product/delete/<?= $product['id'] ?>" onclick="return confirm('Are you sure you want to delete this product?')">Delete</a>
                </td>
            </tr>
        <?php endforeach; ?>
    </table>
</body>
</html>


```

```
<!-- create.php -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Create Product</title>
</head>
<body>
    <h1>Create Product</h1>
    <form action="/product/store" method="post">
        <label for="name">Name:</label><br>
        <input type="text" id="name" name="name"><br>
        <label for="price">Price:</label><br>
        <input type="text" id="price" name="price"><br>
        <label for="description">Description:</label><br>
        <textarea id="description" name="description"></textarea><br><br>
        <input type="submit" value="Submit">
    </form>
</body>
</html>

```

```
<!-- edit.php -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Edit Product</title>
</head>
<body>
    <h1>Edit Product</h1>
    <form action="/product/update/<?= $product['id'] ?>" method="post">
        <label for="name">Name:</label><br>
        <input type="text" id="name" name="name" value="<?= $product['name'] ?>"><br>
        <label for="price">Price:</label><br>
        <input type="text" id="price" name="price" value="<?= $product['price'] ?>"><br>
        <label for="description">Description:</label><br>
        <textarea id="description" name="description"><?= $product['description'] ?></textarea><br><br>
        <input type="submit" value="Update">
    </form>
</body>
</html>

```

**Langkah 8: Pembaruan pada Route untuk Fungsi CRUD**

Perbarui rute untuk setiap fungsi CRUD di dalam file `app/Config/Routes.php` untuk menangani permintaan `POST` dari formulir:

```
$routes->get('/product/create', 'ProductController::create');
$routes->post('/product/store', 'ProductController::store');
$routes->get('/product/edit/(:num)', 'ProductController::edit/$1');
$routes->post('/product/update/(:num)', 'ProductController::update/$1');
$routes->get('/product/delete/(:num)', 'ProductController::delete/$1');
```

**Langkah 9: Uji Coba**

Sekarang, and tinggal mencoba CRUD yang telah anda bikin, dengan menuliskan `php spark serve` pada terminal/command line anda, sehingga server codeigniter 4 akan jalan.