This is one more post on Codeigniter Ajax Crud using DataTables, In this part we will learn how to update or edit Mysql table data in Codeigniter Framework by using Ajax method and load data in DataTables Jquery plugin without page refresh. In previous part we have already discussing how to insert or add mysql table data in Codeigniter Framework by using Ajax.
In this we will see one more CRUD operation like updating or editing of data on a single page without page refresh because we have use Ajax method for update of data in Codeigniter Application. In this part we will edit data step by step. We have already load data with update and delete button link in DataTables.
When we have click on update button then we have fetch particular data and load that data under Bootstrap Modals form and under that form we can change that data and then after we can update data. So, In this part we will update data in Codeigniter web application by using Ajax with Bootstrap Modals and DataTables.
For making this type of crud system by using Ajax request in Codeigniter. In this system we can update data with image upload in Codeingniter with Ajax. So we can edit or update data with image upload by using Bootstrap Modals and DataTables in Codeigniter by using Ajax method without refreshing of page. This is the single page crud application in which we can update or edit data without going to other page. So friends if you like this video tutorial, please share this video with your friends or even you can also share video tutorial on social media also.
Source Code
Controllers - crud.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Crud extends CI_Controller {
//functions
function index(){
$data["title"] = "Codeigniter Ajax CRUD with Data Tables and Bootstrap Modals";
$this->load->view('crud_view', $data);
}
function fetch_user(){
$this->load->model("crud_model");
$fetch_data = $this->crud_model->make_datatables();
$data = array();
foreach($fetch_data as $row)
{
$sub_array = array();
$sub_array[] = '<img src="'.base_url().'upload/'.$row->image.'" class="img-thumbnail" width="50" height="35" />';
$sub_array[] = $row->first_name;
$sub_array[] = $row->last_name;
$sub_array[] = '<button type="button" name="update" id="'.$row->id.'" class="btn btn-warning btn-xs update">Update</button>';
$sub_array[] = '<button type="button" name="delete" id="'.$row->id.'" class="btn btn-danger btn-xs delete">Delete</button>';
$data[] = $sub_array;
}
$output = array(
"draw" => intval($_POST["draw"]),
"recordsTotal" => $this->crud_model->get_all_data(),
"recordsFiltered" => $this->crud_model->get_filtered_data(),
"data" => $data
);
echo json_encode($output);
}
function user_action(){
if($_POST["action"] == "Add")
{
$insert_data = array(
'first_name' => $this->input->post('first_name'),
'last_name' => $this->input->post("last_name"),
'image' => $this->upload_image()
);
$this->load->model('crud_model');
$this->crud_model->insert_crud($insert_data);
echo 'Data Inserted';
}
if($_POST["action"] == "Edit")
{
$user_image = '';
if($_FILES["user_image"]["name"] != '')
{
$user_image = $this->upload_image();
}
else
{
$user_image = $this->input->post("hidden_user_image");
}
$updated_data = array(
'first_name' => $this->input->post('first_name'),
'last_name' => $this->input->post('last_name'),
'image' => $user_image
);
$this->load->model('crud_model');
$this->crud_model->update_crud($this->input->post("user_id"), $updated_data);
echo 'Data Updated';
}
}
function upload_image()
{
if(isset($_FILES["user_image"]))
{
$extension = explode('.', $_FILES['user_image']['name']);
$new_name = rand() . '.' . $extension[1];
$destination = './upload/' . $new_name;
move_uploaded_file($_FILES['user_image']['tmp_name'], $destination);
return $new_name;
}
}
function fetch_single_user()
{
$output = array();
$this->load->model("crud_model");
$data = $this->crud_model->fetch_single_user($_POST["user_id"]);
foreach($data as $row)
{
$output['first_name'] = $row->first_name;
$output['last_name'] = $row->last_name;
if($row->image != '')
{
$output['user_image'] = '<img src="'.base_url().'upload/'.$row->image.'" class="img-thumbnail" width="50" height="35" /><input type="hidden" name="hidden_user_image" value="'.$row->image.'" />';
}
else
{
$output['user_image'] = '<input type="hidden" name="hidden_user_image" value="" />';
}
}
echo json_encode($output);
}
}
Models - crud_model.php
<?php
class Crud_model extends CI_Model
{
var $table = "users";
var $select_column = array("id", "first_name", "last_name", "image");
var $order_column = array(null, "first_name", "last_name", null, null);
function make_query()
{
$this->db->select($this->select_column);
$this->db->from($this->table);
if(isset($_POST["search"]["value"]))
{
$this->db->like("first_name", $_POST["search"]["value"]);
$this->db->or_like("last_name", $_POST["search"]["value"]);
}
if(isset($_POST["order"]))
{
$this->db->order_by($this->order_column[$_POST['order']['0']['column']], $_POST['order']['0']['dir']);
}
else
{
$this->db->order_by('id', 'DESC');
}
}
function make_datatables(){
$this->make_query();
if($_POST["length"] != -1)
{
$this->db->limit($_POST['length'], $_POST['start']);
}
$query = $this->db->get();
return $query->result();
}
function get_filtered_data(){
$this->make_query();
$query = $this->db->get();
return $query->num_rows();
}
function get_all_data()
{
$this->db->select("*");
$this->db->from($this->table);
return $this->db->count_all_results();
}
function insert_crud($data)
{
$this->db->insert('users', $data);
}
function fetch_single_user($user_id)
{
$this->db->where("id", $user_id);
$query=$this->db->get('users');
return $query->result();
}
function update_crud($user_id, $data)
{
$this->db->where("id", $user_id);
$this->db->update("users", $data);
}
}
Views - crud_view.php
<html>
<head>
<title><?php echo $title; ?></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
<script src="https://cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.10.12/js/dataTables.bootstrap.min.js"></script>
<link rel="stylesheet" href="https://cdn.datatables.net/1.10.12/css/dataTables.bootstrap.min.css" />
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<style>
body
{
margin:0;
padding:0;
background-color:#f1f1f1;
}
.box
{
width:900px;
padding:20px;
background-color:#fff;
border:1px solid #ccc;
border-radius:5px;
margin-top:10px;
}
</style>
</head>
<body>
<div class="container box">
<h3 align="center"><?php echo $title; ?></h3><br />
<div class="table-responsive">
<br />
<button type="button" id="add_button" data-toggle="modal" data-target="#userModal" class="btn btn-info btn-lg">Add</button>
<br /><br />
<table id="user_data" class="table table-bordered table-striped">
<thead>
<tr>
<th width="10%">Image</th>
<th width="35%">First Name</th>
<th width="35%">Last Name</th>
<th width="10%">Edit</th>
<th width="10%">Delete</th>
</tr>
</thead>
</table>
</div>
</div>
</body>
</html>
<div id="userModal" class="modal fade">
<div class="modal-dialog">
<form method="post" id="user_form">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Add User</h4>
</div>
<div class="modal-body">
<label>Enter First Name</label>
<input type="text" name="first_name" id="first_name" class="form-control" />
<br />
<label>Enter Last Name</label>
<input type="text" name="last_name" id="last_name" class="form-control" />
<br />
<label>Select User Image</label>
<input type="file" name="user_image" id="user_image" />
<span id="user_uploaded_image"></span>
</div>
<div class="modal-footer">
<input type="hidden" name="user_id" id="user_id" />
<input type="submit" name="action" id="action" class="btn btn-success" value="Add" />
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</form>
</div>
</div>
<script type="text/javascript" language="javascript" >
$(document).ready(function(){
$('#add_button').click(function(){
$('#user_form')[0].reset();
$('.modal-title').text("Add User");
$('#action').val("Add");
$('#user_uploaded_image').html('');
})
var dataTable = $('#user_data').DataTable({
"processing":true,
"serverSide":true,
"order":[],
"ajax":{
url:"<?php echo base_url() . 'crud/fetch_user'; ?>",
type:"POST"
},
"columnDefs":[
{
"targets":[0, 3, 4],
"orderable":false,
},
],
});
$(document).on('submit', '#user_form', function(event){
event.preventDefault();
var firstName = $('#first_name').val();
var lastName = $('#last_name').val();
var extension = $('#user_image').val().split('.').pop().toLowerCase();
if(extension != '')
{
if(jQuery.inArray(extension, ['gif','png','jpg','jpeg']) == -1)
{
alert("Invalid Image File");
$('#user_image').val('');
return false;
}
}
if(firstName != '' && lastName != '')
{
$.ajax({
url:"<?php echo base_url() . 'crud/user_action'?>",
method:'POST',
data:new FormData(this),
contentType:false,
processData:false,
success:function(data)
{
alert(data);
$('#user_form')[0].reset();
$('#userModal').modal('hide');
dataTable.ajax.reload();
}
});
}
else
{
alert("Bother Fields are Required");
}
});
$(document).on('click', '.update', function(){
var user_id = $(this).attr("id");
$.ajax({
url:"<?php echo base_url(); ?>crud/fetch_single_user",
method:"POST",
data:{user_id:user_id},
dataType:"json",
success:function(data)
{
$('#userModal').modal('show');
$('#first_name').val(data.first_name);
$('#last_name').val(data.last_name);
$('.modal-title').text("Edit User");
$('#user_id').val(user_id);
$('#user_uploaded_image').html(data.user_image);
$('#action').val("Edit");
}
})
});
});
</script>
Hello sir are you remove your webslession channel form YouTube?
ReplyDeletenope...............
DeleteI have been enjoying your lessons. Great to me. Keep it up
ReplyDeleteUndefined index: action
ReplyDeletehello sir,
ReplyDeletei try to follow your code , but i think something missing in your code when user want to Edit the data , isn't ?
Hello Sir, i follow this code but i have this error
ReplyDeleteA PHP Error was encountered
Severity: Notice
Message: Undefined index: action
Filename: controllers/service.php
Line Number: 62
Backtrace:
File: C:\wamp\www\socar\application\controllers\service.php
Line: 62
Function: _error_handler
File: C:\wamp\www\socar\index.php
Line: 315
Function: require_once
if(isset($POST['action']) == 'Add')
Delete{
............
..........
}
Hello Sir I have problem datatables not insert,update,delete data how can solve this problem
ReplyDeletethis is not working properly for me.
ReplyDeleteupdating is not working please hhelp
ReplyDeletegood
ReplyDeleteI am getting Undefined Offset: 1 error message when hit Edit button
ReplyDeleteNeed crud operation example jQuery using select dropdown, radio button and multiple select
ReplyDeleteNeed crud operation example jQuery using select dropdown, radio button and multiple select
ReplyDeleteNeed crud operation example jQuery using select dropdown, radio button and multiple select
ReplyDeletehow can put alerts using ajax and jquery
ReplyDeleteNot working
ReplyDelete