If you have use jQuery Dialogify plugin for create popup modal dialog box with your PHP web application. Then in that application you have to perform any update data operation. So, this post will help you to how to integrate jQuery Dialogify plugin for update or edit data operation using PHP with Ajax. In previous part, we have seen how can we use jquery Dialogify plugin for Insert or Add data into Mysql data using PHP with Ajax. For this things here we have use jQuery based Dialogify library for popup modal on web page. Because it is very easy to use, and it is light weight and simple plugin. For make modal dialog box, by using this plugin we have to not write any HTML code. It will allowed users to write callback function call on any event.
Here we want to update or edit data of existing mysql data using PHP script with Ajax. For load existing data into modal dialog box. If you have use this plugin, then you have to make seperate HTML form file for load data into form. Here for update or edit data, first we want to fetch existing data from database using Ajax request send to PHP. Once data has been received in json format, after this first we want to store that in Browser local storage using localStorage object, which store data with no any expiration date.
Once all data has been store in browser local storage using localStorage.setItem() method. By using this method we can store data in browser local storage. After storing all data now we have to go to seperate file in which we have create HTML form fields, and in that file, we have to fetch data from browser local storage using localStorage.getItem() method. By using this method we can fetch data from browser local storage and store into local variable. After fetching all data, after this we have to assign that data to html form fields using jquery code. Lastly we have to use new Dialogify() method, and make popup dialog box using seperate file form fields with fill data. So, when we have click on update button, then modal dialog will popup with fill form data. Lastly, we have to trigger ajax reqest when use click on Edit button, which send ajax request to PHP script for update of data. This whole process code will you can find below.
See Also
Source Code
Database
--
-- Database: `testing`
--
-- --------------------------------------------------------
--
-- Table structure for table `tbl_employee`
--
CREATE TABLE `tbl_employee` (
`id` int(11) NOT NULL,
`name` varchar(50) NOT NULL,
`address` text NOT NULL,
`gender` varchar(10) NOT NULL,
`designation` varchar(100) NOT NULL,
`age` int(11) NOT NULL,
`images` varchar(150) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Dumping data for table `tbl_employee`
--
INSERT INTO `tbl_employee` (`id`, `name`, `address`, `gender`, `designation`, `age`, `images`) VALUES
(6, 'Barbra K. Hurley', '1241 Canis Heights Drive\r\nLos Angeles, CA 90017', 'Female', 'Service technician', 26, 'image_35.jpg'),
(7, 'Antonio J. Forbes', '403 Snyder Avenue\r\nCharlotte, NC 28208', 'Male', 'Faller', 28, 'image_36.jpg'),
(8, 'Charles D. Horst', '1636 Walnut Hill Drive\r\nCincinnati, OH 45202', 'Male', 'Financial investigator', 29, 'image_37.jpg'),
(174, 'Martha B. Tomlinson', '4005 Bird Spring Lane, Houston, TX 77002', 'Female', 'Systems programmer', 28, 'image_44.jpg'),
(162, 'Jarrod D. Jones', '3827 Bingamon Road, Garfield Heights, OH 44125', 'Male', 'Manpower development advisor', 24, 'image_3.jpg'),
(192, 'Flora Reed', '4000 Hamilton Drive Cambridge, MD 21613', 'Female', 'Machine offbearer', 27, 'image_41.jpg'),
(193, 'Donna Case', '4781 Apple Lane Peoria, IL 61602', 'Female', 'Machine operator', 26, 'image_15.jpg'),
(194, 'William Lewter', '168 Little Acres Lane Decatur, IL 62526', 'Male', 'Process engineer', 25, 'image_46.jpg'),
(195, 'Nathaniel Leger', '3200 Harley Brook Lane Meadville, PA 16335', 'Male', 'Nurse', 21, 'image_34.jpg'),
(183, 'Steve John', '108, Vile Parle, CL', 'Male', 'Software Engineer', 29, 'image_47.jpg'),
(186, 'Louis C. Charmis', '1462 Juniper Drive\r\nBreckenridge, MI 48612', 'Male', 'Mental health counselor', 30, ''),
(200, 'June Barnard', '4465 Woodland Terrace Folsom, CA 95630', 'Female', 'Fishing vessel operator', 24, '');
--
-- Indexes for dumped tables
--
--
-- Indexes for table `tbl_employee`
--
ALTER TABLE `tbl_employee`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `tbl_employee`
--
ALTER TABLE `tbl_employee`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=206;
database_connection.php
<?php
//database_connection.php
$username = 'root';
$password = '';
$connect = new PDO( 'mysql:host=localhost;dbname=testing', $username, $password );
?>
index.php
<html>
<head>
<title>Delete Mysql Data using jQuery Dialogify with PHP Ajax</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>
<script src="https://www.jqueryscript.net/demo/Dialog-Modal-Dialogify/dist/dialogify.min.js"></script>
</head>
<body>
<div class="container">
<br />
<h3 align="center">Delete Mysql Data using jQuery Dialogify with PHP Ajax</h3>
<br />
<div class="panel panel-default">
<div class="panel-heading">
<div class="row">
<div class="col-md-6">
<h3 class="panel-title">Employee Data</h3>
</div>
<div class="col-md-6" align="right">
<button type="button" name="add_data" id="add_data" class="btn btn-success btn-xs">Add</button>
</div>
</div>
</div>
<div class="panel-body">
<div class="table-responsive">
<span id="form_response"></span>
<table id="user_data" class="table table-bordered table-striped">
<thead>
<tr>
<td>Name</td>
<td>Gender</td>
<td>Designation</td>
<td>Age</td>
<td>View</td>
<td>Edit</td>
<td>Delete</td>
</tr>
</thead>
</table>
</div>
</div>
</div>
</div>
</body>
</html>
<script type="text/javascript" language="javascript" >
$(document).ready(function(){
var dataTable = $('#user_data').DataTable({
"processing":true,
"serverSide":true,
"order":[],
"ajax":{
url:"fetch.php",
type:"POST"
},
"columnDefs":[
{
"targets":[4,5,6],
"orderable":false,
},
],
});
$(document).on('click', '.view', function(){
var id = $(this).attr('id');
var options = {
ajaxPrefix: '',
ajaxData: {id:id},
ajaxComplete:function(){
this.buttons([{
type: Dialogify.BUTTON_PRIMARY
}]);
}
};
new Dialogify('fetch_single.php', options)
.title('View Employee Details')
.showModal();
});
$('#add_data').click(function(){
var options = {
ajaxPrefix:''
};
new Dialogify('add_data_form.php', options)
.title('Add New Employee Data')
.buttons([
{
text:'Cancle',
click:function(e){
this.close();
}
},
{
text:'Insert',
type:Dialogify.BUTTON_PRIMARY,
click:function(e)
{
var image_data = $('#images').prop("files")[0];
var form_data = new FormData();
form_data.append('images', image_data);
form_data.append('name', $('#name').val());
form_data.append('address', $('#address').val());
form_data.append('gender', $('#gender').val());
form_data.append('designation', $('#designation').val());
form_data.append('age', $('#age').val());
$.ajax({
method:"POST",
url:'insert_data.php',
data:form_data,
dataType:'json',
contentType:false,
cache:false,
processData:false,
success:function(data)
{
if(data.error != '')
{
$('#form_response').html('<div class="alert alert-danger">'+data.error+'</div>');
}
else
{
$('#form_response').html('<div class="alert alert-success">'+data.success+'</div>');
dataTable.ajax.reload();
}
}
});
}
}
]).showModal();
});
$(document).on('click', '.update', function(){
var id = $(this).attr('id');
$.ajax({
url:"fetch_single_data.php",
method:"POST",
data:{id:id},
dataType:'json',
success:function(data)
{
localStorage.setItem('name', data[0].name);
localStorage.setItem('address', data[0].address);
localStorage.setItem('gender', data[0].gender);
localStorage.setItem('designation', data[0].designation);
localStorage.setItem('age', data[0].age);
localStorage.setItem('images', data[0].images);
var options = {
ajaxPrefix:''
};
new Dialogify('edit_data_form.php', options)
.title('Edit Employee Data')
.buttons([
{
text:'Cancle',
click:function(e){
this.close();
}
},
{
text:'Edit',
type:Dialogify.BUTTON_PRIMARY,
click:function(e)
{
var image_data = $('#images').prop("files")[0];
var form_data = new FormData();
form_data.append('images', image_data);
form_data.append('name', $('#name').val());
form_data.append('address', $('#address').val());
form_data.append('gender', $('#gender').val());
form_data.append('designation', $('#designation').val());
form_data.append('age', $('#age').val());
form_data.append('hidden_images', $('#hidden_images').val());
form_data.append('id', data[0].id);
$.ajax({
method:"POST",
url:'update_data.php',
data:form_data,
dataType:'json',
contentType:false,
cache:false,
processData:false,
success:function(data)
{
if(data.error != '')
{
$('#form_response').html('<div class="alert alert-danger">'+data.error+'</div>');
}
else
{
$('#form_response').html('<div class="alert alert-success">'+data.success+'</div>');
dataTable.ajax.reload();
}
}
});
}
}
]).showModal();
}
})
});
$(document).on('click', '.delete', function(){
var id = $(this).attr('id');
Dialogify.confirm("<h3 class='text-danger'><b>Are you sure you want to remove this data?</b></h3>", {
ok:function(){
$.ajax({
url:"delete_data.php",
method:"POST",
data:{id:id},
success:function(data)
{
Dialogify.alert('<h3 class="text-success text-center"><b>Data has been deleted</b></h3>');
dataTable.ajax.reload();
}
})
},
cancel:function(){
this.close();
}
});
});
});
</script>
fetch.php
<?php
//fetch.php
include('database_connection.php');
$query = '';
$output = array();
$query .= "SELECT * FROM tbl_employee ";
if(isset($_POST["search"]["value"]))
{
$query .= 'WHERE name LIKE "%'.$_POST["search"]["value"].'%" OR address LIKE "%'.$_POST["search"]["value"].'%" OR gender LIKE "%'.$_POST["search"]["value"].'%" OR designation LIKE "%'.$_POST["search"]["value"].'%" OR age LIKE "%'.$_POST["search"]["value"].'%" ';
}
if(isset($_POST["order"]))
{
$query .= 'ORDER BY '.$_POST['order']['0']['column'].' '.$_POST['order']['0']['dir'].' ';
}
else
{
$query .= 'ORDER BY id DESC ';
}
if($_POST["length"] != -1)
{
$query .= 'LIMIT ' . $_POST['start'] . ', ' . $_POST['length'];
}
$statement = $connect->prepare($query);
$statement->execute();
$result = $statement->fetchAll();
$data = array();
$filtered_rows = $statement->rowCount();
foreach($result as $row)
{
$sub_array = array();
$sub_array[] = $row["name"];
$sub_array[] = $row["gender"];
$sub_array[] = $row["designation"];
$sub_array[] = $row["age"];
$sub_array[] = '<button type="button" name="view" id="'.$row["id"].'" class="btn btn-primary btn-xs view">View</button>';
$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;
}
function get_total_all_records($connect)
{
$statement = $connect->prepare("SELECT * FROM tbl_employee");
$statement->execute();
$result = $statement->fetchAll();
return $statement->rowCount();
}
$output = array(
"draw" => intval($_POST["draw"]),
"recordsTotal" => $filtered_rows,
"recordsFiltered" => get_total_all_records($connect),
"data" => $data
);
echo json_encode($output);
?>
add_data_form.php
<div class="form-group">
<label>Enter Employee Name</label>
<input type="text" name="name" id="name" class="form-control" />
</div>
<div class="form-group">
<label>Enter Employee Address</label>
<textarea name="address" id="address" class="form-control"></textarea>
</div>
<div class="form-group">
<label>Enter Employee Gender</label>
<select name="gender" id="gender" class="form-control">
<option value="Male">Male</option>
<option value="Female">Female</option>
</select>
</div>
<div class="form-group">
<label>Enter Employee Desingation</label>
<input type="text" name="designation" id="designation" class="form-control" />
</div>
<div class="form-group">
<label>Enter Employee Age</label>
<input type="text" name="age" id="age" class="form-control" />
</div>
<div class="form-group">
<label>Select Employee Image</label>
<input type="file" name="images" id="images" />
</div>
insert_data.php
<?php
//insert_data.php
include('database_connection.php');
if(isset($_POST["name"]))
{
$error = '';
$success = '';
$name = '';
$address = '';
$designation = '';
$age = '';
$images = '';
$gender = $_POST["gender"];
if(empty($_POST["name"]))
{
$error .= '<p>Name is Required</p>';
}
else
{
$name = $_POST["name"];
}
if(empty($_POST["address"]))
{
$error .= '<p>Address is Required</p>';
}
else
{
$address = $_POST["address"];
}
if(empty($_POST["designation"]))
{
$error .= '<p>Designation is Required</p>';
}
else
{
$designation = $_POST["designation"];
}
if(empty($_POST["age"]))
{
$error .= '<p>Age is Required</p>';
}
else
{
$age = $_POST["age"];
}
if(isset($_FILES["images"]["name"]) && $_FILES["images"]["name"] != '')
{
$image_name = $_FILES["images"]["name"];
$array = explode(".", $image_name);
$extension = end($array);
$temporary_name = $_FILES["images"]["tmp_name"];
$allowed_extension = array("jpg","png");
if(!in_array($extension, $allowed_extension))
{
$error .= '<p>Invalid Image</p>';
}
else
{
$images = rand() . '.' . $extension;
move_uploaded_file($temporary_name, 'images/' . $images);
}
}
if($error == '')
{
$data = array(
':name' => $name,
':address' => $address,
':gender' => $gender,
':designation' => $designation,
':age' => $age,
':images' => $images
);
$query = "
INSERT INTO tbl_employee
(name, address, gender, designation, age, images)
VALUES (:name, :address, :gender, :designation, :age, :images)
";
$statement = $connect->prepare($query);
$statement->execute($data);
$success = 'Employee Data Inserted';
}
$output = array(
'success' => $success,
'error' => $error
);
echo json_encode($output);
}
?>
fetch_single_data.php
<?php
//fetch_single_data.php
include('database_connection.php');
if(isset($_POST["id"]))
{
$query = "
SELECT * FROM tbl_employee WHERE id = '".$_POST["id"]."'
";
$statement = $connect->prepare($query);
$statement->execute();
while($row = $statement->fetch(PDO::FETCH_ASSOC))
{
$data[] = $row;
}
echo json_encode($data);
}
?>
edit_data_form.php
<div class="form-group">
<label>Enter Employee Name</label>
<input type="text" name="name" id="name" class="form-control" />
</div>
<div class="form-group">
<label>Enter Employee Address</label>
<textarea name="address" id="address" class="form-control"></textarea>
</div>
<div class="form-group">
<label>Enter Employee Gender</label>
<select name="gender" id="gender" class="form-control">
<option value="Male">Male</option>
<option value="Female">Female</option>
</select>
</div>
<div class="form-group">
<label>Enter Employee Desingation</label>
<input type="text" name="designation" id="designation" class="form-control" />
</div>
<div class="form-group">
<label>Enter Employee Age</label>
<input type="text" name="age" id="age" class="form-control" />
</div>
<div class="form-group">
<label>Select Employee Image</label>
<input type="file" name="images" id="images" />
<span id="uploaded_image"></span>
<input type="hidden" name="hidden_images" id="hidden_images" />
</div>
<script>
$(document).ready(function () {
var name = localStorage.getItem('name');
var address = localStorage.getItem('address');
var gender = localStorage.getItem('gender');
var designation = localStorage.getItem('designation');
var age = localStorage.getItem('age');
var images = localStorage.getItem('images');
$('#name').val(name);
$('#address').val(address);
$('#gender').val(gender);
$('#designation').val(designation);
$('#age').val(age);
if(images != '')
{
$('#uploaded_image').html('<img src="images/'+images+'" class="img-thumbnail" width="100" />');
$('#hidden_images').val(images);
}
});
</script>
update_data.php
<?php
//update_data.php
include('database_connection.php');
if(isset($_POST["name"]))
{
$error = '';
$success = '';
$name = '';
$address = '';
$designation = '';
$age = '';
$images = '';
$gender = $_POST["gender"];
if(empty($_POST["name"]))
{
$error .= '<p>Name is Required</p>';
}
else
{
$name = $_POST["name"];
}
if(empty($_POST["address"]))
{
$error .= '<p>Address is Required</p>';
}
else
{
$address = $_POST["address"];
}
if(empty($_POST["designation"]))
{
$error .= '<p>Designation is Required</p>';
}
else
{
$designation = $_POST["designation"];
}
if(empty($_POST["age"]))
{
$error .= '<p>Age is Required</p>';
}
else
{
$age = $_POST["age"];
}
$images = $_POST['hidden_images'];
if(isset($_FILES["images"]["name"]) && $_FILES["images"]["name"] != '')
{
$image_name = $_FILES["images"]["name"];
$array = explode(".", $image_name);
$extension = end($array);
$temporary_name = $_FILES["images"]["tmp_name"];
$allowed_extension = array("jpg","png");
if(!in_array($extension, $allowed_extension))
{
$error .= '<p>Invalid Image</p>';
}
else
{
$images = rand() . '.' . $extension;
move_uploaded_file($temporary_name, 'images/' . $images);
}
}
if($error == '')
{
$data = array(
':name' => $name,
':address' => $address,
':gender' => $gender,
':designation' => $designation,
':age' => $age,
':images' => $images,
':id' => $_POST["id"]
);
$query = "
UPDATE tbl_employee
SET name = :name,
address = :address,
gender = :gender,
designation = :designation,
age = :age,
images = :images
WHERE id = :id
";
$statement = $connect->prepare($query);
$statement->execute($data);
$success = 'Employee Data Updated';
}
$output = array(
'success' => $success,
'error' => $error
);
echo json_encode($output);
}
?>
delete_data.php
<?php
//delete_data.php
include('database_connection.php');
if(isset($_POST["id"]))
{
$query = "
DELETE FROM tbl_employee
WHERE id = '".$_POST["id"]."'
";
$statement = $connect->prepare($query);
$statement->execute();
}
?>
Here we have provide complete source code with View data in modal dialog box, insert data, update data and delete data using jQuery Dialogify plugin using PHP with Ajax.
great , thank you sooo much .
ReplyDeleteis it possible to teach me how to make search multi search in multi columns ,,. ? thank you
Can you please help me out with the problem I have that View doesnt generate and I get an error : jquery.min.js:2 GET http://localhost/police/fetch_single.php?id=206 404 (Not Found)
Deletealso need to add a check box in each row of the table and automatically save the value for this check box as 1 in the database when check it without page refresh ,, please help .
ReplyDeletethank you
Hi Webslesson, i have this trouble u can help me... ( the console of chrome says .. the error is in fetch.php file in the line 25 ) but i can't how to make to fix this
ReplyDeletelook
Raymond Hernandez
Hace 1 segundo
Hi Webslesson Thanks for all, now i have a big trouble u can help me please.. look i can´t fix this .. thanks for your time
http://subirimagen.me/uploads/20190214105819.jpg
http://subirimagen.me/uploads/20190214105842.png
thanks for your time
Hello your tutorial are so cool. Especially those for Codeigniter.
ReplyDeleteFor you to know
In the demo of this "Update or Edit Data using jQuery Dialogify", if you sort by name, all the rows disappear, check by yourself
'view' button does not work, and give me 404 error.
ReplyDeleteanybody help me?
bootstrap css not inherit from parrent and input not have bootstrap css style. What's the problem?
ReplyDeletelegend
ReplyDeletehi sir view button not working sir? it stack in loading but not showing the employee details, can you help me sir?
ReplyDeletehi sir view button not working sir? it stack in loading but not showing the employee details, can you help me sir?
ReplyDeleteif i delete all image thing, proje didnt work. what is the problem i really understand ???
ReplyDeletethe view is not working
ReplyDeleteGood job!
ReplyDeletebut didn't work at bootstrap 4. Can you please make a new tutorial for latest version. Bootstrap 3 is not latest.
Please Read this. I really live,love this site.
PM me here. "Obenza.jhanmark01@gmail.com"
Good job!
ReplyDeletebut didn't work at bootstrap 4. Can you please make a new tutorial for latest version. Bootstrap 3 is not latest.
Please Read this. I really live,love this site.
PM me here. "Obenza.jhanmark01@gmail.com"
Good job!
ReplyDeletebut didn't work at bootstrap 4. Can you please make a new tutorial for latest version. Bootstrap 3 is not latest.
Please Read this. I really live,love this site.
PM me here. "Obenza.jhanmark01@gmail.com"
Good job!
ReplyDeletebut didn't work at bootstrap 4. Can you please make a new tutorial for latest version. Bootstrap 3 is not latest.
Please Read this. I really live,love this site.
PM me here. "Obenza.jhanmark01@gmail.com"
am i missing "fetch_single.php"??
ReplyDeletewhy i can't update the data ? i tried many ways but still can't. Help please :'(
ReplyDeleteupdate not work
ReplyDeletefetch_singe data is not working. Index.php refers to fetch_single.php which dont exist. After renaming fetch_single_data.php to fetch_single.php still dont work.
ReplyDeleteI am facing some problem in regards of the updates of the libraries of jquery and bootstrap. I tried to get it up to date because it causes PROBLEM WITH VIEW THE USER. Can you please help me out with the updates maybe?
ReplyDeletehello good day, you will have the code because I downloaded it from the page and it did not work
ReplyDeletehello good day, you will have the code because I downloaded it from the page and it did not work
ReplyDeletehola le trato de abregar campos y tambien el a base de datos pero no me lo inserta ni lo actualiza ni lo edita . Tengo que hacer algo mas ? que solo agregar las variables?
ReplyDeletehi, why the delete button is not function?
ReplyDeletethank you mister,,
ReplyDeleteI have an update action like this but failed, please be told where the error is
$_POST["pembayaran"],
':ymd' => $_POST["tanggal"],
':nama' => $_POST["nama"],
':sales' => $_POST["sales"],
':invoice' => $_POST["invoice"],
':alamat' => $_POST["alamat"],
':disc1' => $_POST["disc1"],
':jdisc' => $_POST["jdisc"],
':gtotal' => $_POST["total_amount"],
':harga' => $_POST["harga"][$count],
':total' => $_POST["total"][$count],
':item_name' => $_POST["item_name"][$count],
':ukuran' => $_POST["ukuran"][$count],
':item_category_id' => $_POST["item_category"][$count],
':item_sub_category_id' => $_POST["item_sub_category"][$count]
);
$query = "UPDATE items set
item_name = :item_name, item_category_id = :item_category_id, item_sub_category_id = :item_sub_category_id,
pembayaran = :pembayaran, ymd = :ymd, nama = :nama, sales = :sales, ukuran :ukuran,
alamat = :alamat, harga = :harga, total = :total, disc1 = :disc1, jdisc = :jdisc, gtotal = :gtotal WHERE invoice = :invoice
";
$statement = $connect->prepare($query);
$statement->execute($data);
}
echo 'ok';
}
?>
Im having a problem finding where fetch_single.php is? Please help.
ReplyDeleteAs you see in your demo, first column's order function is not working. I set up in my server and same problem existed.
ReplyDeleteit is great work thanks
ReplyDeleteThanks....thats great its help me in my programs ...
ReplyDeleteIts great ...thank you so much ..its help me in my programs
ReplyDeletethank you so muuch
ReplyDeleteView data please!
ReplyDeleteDear Sir,
ReplyDeleteI have an issue in this tutorial, data not displayed when i click on view page. continue search ......not showing anything..Please provide your kind guidance.
when i click view and update button,data is not retrieve only show loading
ReplyDeletei think "fetch_single.php" is missing
ReplyDeletefound it..
ReplyDeletehttps://www.webslesson.info/2019/01/ajax-php-load-data-in-modal-with-dialogify-plugin.html
great tutorial!
ReplyDeleteGreat tutorial, but there is one issue that after updating with new image the old image is not being remove from server...
ReplyDeletethere is no fetch_single in case of this the view module is not working
ReplyDelete