For any queries you can reach us at infovistarindia@gmail.com / WhatsApp us: +919158876092

Update data in Database using CodeIgniter 4

Overview

In this example, we will learn how to update a record or data from the MySQL database using the CodeIgniter 4.
Controller: 	User.php		app/Controllers/User.php
Model:		UserModel.php		app/Models/UserModel.php
View:		list.php		app/Views/list.php
		edit.php		app/Views/edit.php

/app/Config/Routes.php

$routes->add('user/list', 'User::list');
$routes->get('user/edit/(:num)', 'User::save/$1');
$routes->post('user/update', 'User::update');

app/Views/list.php

<table width="600" border="1" cellspacing="5" cellpadding="5">
	<tr style="background:#CCC">
		<th>Sr No</th>
		<th>First_name</th>
		<th>Last_name</th>
		<th>Email Id</th>
		<th>Update</th>
	</tr>
	<?php $i=1; foreach($result as $row) { 
		echo "<tr>"; 
		echo "<td>".$i. "</td>"; 
		echo "<td>".$row->first_name."</td>";
		echo "<td>".$row->last_name."</td>"; 
		echo "<td>".$row->email."</td>"; 
		echo "<td><a href="<?php echo base_url('user/edit'.$row->id) ?>">Edit</a></td>";
		echo "</tr>"; $i++; } ?>
</table>

app/Views/edit.php

<html>
<head>
<title>Update user details</title>
</head>
 
<body>
 <?php
  if($result) {
  ?>
	<form method="post" action="<?php echo base_url('user/update'); ?>">
		<table width="600" border="1" cellspacing="5" cellpadding="5">
  <tr>
    <td width="230">Enter Your Name </td>
    <td width="329">
	<input type="hidden" name="txtId" value="<?php echo $result->id; ?>"/>
<input type="text" name="txtFirstName" value="<?php echo $result->first_name; ?>"/></td>
  </tr>
  <tr>
    <td>Enter Your Email </td>
    <td><input type="text" name="txtLastName" value="<?php echo $result->last_name; ?>"/></td>
  </tr>
  <tr>
    <td>Enter Your Mobile </td>
    <td><input type="text" name="txtEmail" value="<?php echo $result->email; ?>"/></td>
  </tr>
  <tr>
    <td colspan="2" align="center">
	<input type="submit" name="update" value="Update"/></td>
  </tr>
</table>
	</form>
	<?php } ?>
</body>
</html>

/app/Controllers/User.php

<?php
namespace App\Controllers;

use App\Models\UserModel;

class User extends BaseController {

	public function __construct() {

		$db = db_connect();
		$this->userModel = new UserModel($db);
	}

	public function add() {
		$this->load->view('add');
	}

	public function list() {
		$data['result']	= $this->userModel->list();
		echo view('list', $data);
	}

	public function edit($id) {
		$data['result']	= $this->userModel->get_user($id);
		echo view('list', $data);
	}

	public function update() {
		$id		= $this->request->getPost('txtId');
		$first_name	= $this->request->getPost('txtLastName');
		$last_name	= $this->request->getPost('txtLastName');
		$email		= $this->request->getPost('txtEmail');
		
		$data = [
			'first_name'		=> $first_name,
			'last_name'		=> $last_name,
			'email'			=> $email,
		];

		$result = $this->userModel->update($id, $data);
		if($result) {
			echo "User details are updated successfully.";
		} else {
			echo "Something went wrong";
		}
	}
}

/app/Models/UserModel.php

<?php 
namespace App\Models;

use CodeIgniter\Model;
use CodeIgniter\Database\ConnectionInterface;

class UserModel extends Model {
	
	protected $db;
	public function __construct(ConnectionInterface &$db) {
		$this->db =& $db;
	}

	public function list() {
		return $this->db
                        ->table('user_info')
                        ->get()
                        ->getResult();
	}

	public function get_user($id) {
		return $this->db
                        ->table('user_info')
                        ->where(["id" => $id])
                        ->get()
                        ->getRow();
	}

	public function update($id, $data) {
		return $this->db
                        ->table('app_info')
                        ->where(["id" => $id])
                        ->set($data)
                        ->update();
	}
	
}