Performing CRUD (create,read,update,delete) operations with database data is a basic fundamental for application, and is extremely easy to implement CRUD operation application in CodeIgniter 4 with ORM.
Let’s start building a CRUD operation application using Bootstrap 5 and MySQL database:
Step 1: Setting Up CodeIgniter 4
Download CodeIgniter 4 from the official website:https://codeigniter.com/user_guide/installation/index.html., and extract download zip file in xampp/htdocs directory.
Edit .env
file, and set the database connection:
database.default.hostname = localhost
database.default.database = your_database_name
database.default.username = your_username
database.default.password = your_password
database.default.DBDriver = MySQLi
Step 2: Create the Database and Table
Run the following sql query to create database and table:
CREATE DATABASE ci4_crud;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Step 3: Creating the Model
Go to the app/models
directory and create a model file called UserModel.php
in it:
<?php namespace App\Models;
use CodeIgniter\Model;
class UserModel extends Model
{
protected $table = 'users';
protected $primaryKey = 'id';
protected $allowedFields = ['name', 'email'];
}
Step 4: Creating the Controller
Go to app/Controllers/
directory and create a new file named UserController.php
, and crud methods in it to handle crud operation with mysql database:
<?php namespace App\Controllers;
use App\Models\UserModel;
use CodeIgniter\Controller;
class UserController extends Controller
{
public function index()
{
$model = new UserModel();
$data['users'] = $model->findAll();
return view('users/index', $data);
}
public function create()
{
return view('users/create');
}
public function store()
{
$model = new UserModel();
$model->save([
'name' => $this->request->getPost('name'),
'email' => $this->request->getPost('email'),
]);
return redirect()->to('/users');
}
public function edit($id)
{
$model = new UserModel();
$data['user'] = $model->find($id);
return view('users/edit', $data);
}
public function update($id)
{
$model = new UserModel();
$model->update($id, [
'name' => $this->request->getPost('name'),
'email' => $this->request->getPost('email'),
]);
return redirect()->to('/users');
}
public function delete($id)
{
$model = new UserModel();
$model->delete($id);
return redirect()->to('/users');
}
}
Step 5: Create Views with Bootstrap 5
Create a new file layout.php
in app/Views
directory:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CodeIgniter 4 CRUD With MySQL Tutorial - Itcodstuff.com</title>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container mt-5">
<?= $this->renderSection('content') ?>
</div>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
In the app/Views/users
directory create a new file list.php
to show list of users from database:
<?= $this->extend('layout') ?>
<?= $this->section('content') ?>
<h2>Users List</h2>
<a href="/users/create" class="btn btn-primary mb-3">Add New User</a>
<table class="table table-bordered">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<?php foreach($users as $user): ?>
<tr>
<td><?= $user['id'] ?></td>
<td><?= $user['name'] ?></td>
<td><?= $user['email'] ?></td>
<td>
<a href="/users/edit/<?= $user['id'] ?>" class="btn btn-warning">Edit</a>
<a href="/users/delete/<?= $user['id'] ?>" class="btn btn-danger">Delete</a>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?= $this->endSection() ?>
Create a new file create.php
in app/Views/users
directory, and make add the user form in it:
<?= $this->extend('layout') ?>
<?= $this->section('content') ?>
<h2>Add New User</h2>
<form action="/users/store" method="post">
<div class="mb-3">
<label for="name" class="form-label">Name</label>
<input type="text" class="form-control" id="name" name="name" required>
</div>
<div class="mb-3">
<label for="email" class="form-label">Email</label>
<input type="email" class="form-control" id="email" name="email" required>
</div>
<button type="submit" class="btn btn-success">Save</button>
</form>
<?= $this->endSection() ?>
In the app/Views/users
directory create a new file edit.php
, and create edit user form in it:
<?= $this->extend('layout') ?>
<?= $this->section('content') ?>
<h2>Edit User</h2>
<form action="/users/update/<?= $user['id'] ?>" method="post">
<div class="mb-3">
<label for="name" class="form-label">Name</label>
<input type="text" class="form-control" id="name" name="name" value="<?= $user['name'] ?>" required>
</div>
<div class="mb-3">
<label for="email" class="form-label">Email</label>
<input type="email" class="form-control" id="email" name="email" value="<?= $user['email'] ?>" required>
</div>
<button type="submit" class="btn btn-success">Update</button>
</form>
<?= $this->endSection() ?>
Step 6: Define Routes
Edit app/Config/Routes.php
and define the following routes:
$routes->get('/users', 'UserController::index');
$routes->get('/users/create', 'UserController::create');
$routes->post('/users/store', 'UserController::store');
$routes->get('/users/edit/(:num)', 'UserController::edit/$1');
$routes->post('/users/update/(:num)', 'UserController::update/$1');
$routes->get('/users/delete/(:num)', 'UserController::delete/$1');
Step 7: Test the Application
Type the url: http://localhost/your_project_name/public/users
on browser and test this application