In this post, you will be learning complete CRUD operation in php, jquery, ajax with Bootstrap Modal (Pop up box).
CRUD Operation means Create, Read, Update, Delete. where we will be seeing insert, fetch, edit & update, confirm delete data.
In this file, we will completing CRUD operation using dialog box Bootstrap Modal as given below code.
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<title>PHP CRUD using jquery ajax without page reload</title>
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/alertifyjs@1.13.1/build/css/alertify.min.css"/>
</head>
<body>
<!-- Add Student -->
<div class="modal fade" id="studentAddModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Add Student</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<form id="saveStudent">
<div class="modal-body">
<div id="errorMessage" class="alert alert-warning d-none"></div>
<div class="mb-3">
<label for="">Name</label>
<input type="text" name="name" class="form-control" />
</div>
<div class="mb-3">
<label for="">Email</label>
<input type="text" name="email" class="form-control" />
</div>
<div class="mb-3">
<label for="">Phone</label>
<input type="text" name="phone" class="form-control" />
</div>
<div class="mb-3">
<label for="">Course</label>
<input type="text" name="course" class="form-control" />
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
<button type="submit" class="btn btn-primary">Save Student</button>
</div>
</form>
</div>
</div>
</div>
<!-- Edit Student Modal -->
<div class="modal fade" id="studentEditModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Edit Student</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<form id="updateStudent">
<div class="modal-body">
<div id="errorMessageUpdate" class="alert alert-warning d-none"></div>
<input type="hidden" name="student_id" id="student_id" >
<div class="mb-3">
<label for="">Name</label>
<input type="text" name="name" id="name" class="form-control" />
</div>
<div class="mb-3">
<label for="">Email</label>
<input type="text" name="email" id="email" class="form-control" />
</div>
<div class="mb-3">
<label for="">Phone</label>
<input type="text" name="phone" id="phone" class="form-control" />
</div>
<div class="mb-3">
<label for="">Course</label>
<input type="text" name="course" id="course" class="form-control" />
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
<button type="submit" class="btn btn-primary">Update Student</button>
</div>
</form>
</div>
</div>
</div>
<!-- View Student Modal -->
<div class="modal fade" id="studentViewModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">View Student</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="mb-3">
<label for="">Name</label>
<p id="view_name" class="form-control"></p>
</div>
<div class="mb-3">
<label for="">Email</label>
<p id="view_email" class="form-control"></p>
</div>
<div class="mb-3">
<label for="">Phone</label>
<p id="view_phone" class="form-control"></p>
</div>
<div class="mb-3">
<label for="">Course</label>
<p id="view_course" class="form-control"></p>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<div class="container mt-4">
<div class="row">
<div class="col-md-12">
<div class="card">
<div class="card-header">
<h4>PHP Ajax CRUD without page reload using Bootstrap Modal
<button type="button" class="btn btn-primary float-end" data-bs-toggle="modal" data-bs-target="#studentAddModal">
Add Student
</button>
</h4>
</div>
<div class="card-body">
<table id="myTable" class="table table-bordered table-striped">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
<th>Phone</th>
<th>Course</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
require 'dbcon.php';
$query = "SELECT * FROM students";
$query_run = mysqli_query($con, $query);
if(mysqli_num_rows($query_run) > 0)
{
foreach($query_run as $student)
{
?>
<tr>
<td><?= $student['id'] ?></td>
<td><?= $student['name'] ?></td>
<td><?= $student['email'] ?></td>
<td><?= $student['phone'] ?></td>
<td><?= $student['course'] ?></td>
<td>
<button type="button" value="<?=$student['id'];?>" class="viewStudentBtn btn btn-info btn-sm">View</button>
<button type="button" value="<?=$student['id'];?>" class="editStudentBtn btn btn-success btn-sm">Edit</button>
<button type="button" value="<?=$student['id'];?>" class="deleteStudentBtn btn btn-danger btn-sm">Delete</button>
</td>
</tr>
<?php
}
}
?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/alertifyjs@1.13.1/build/alertify.min.js"></script>
<script>
$(document).on('submit', '#saveStudent', function (e) {
e.preventDefault();
var formData = new FormData(this);
formData.append("save_student", true);
$.ajax({
type: "POST",
url: "code.php",
data: formData,
processData: false,
contentType: false,
success: function (response) {
var res = jQuery.parseJSON(response);
if(res.status == 422) {
$('#errorMessage').removeClass('d-none');
$('#errorMessage').text(res.message);
}else if(res.status == 200){
$('#errorMessage').addClass('d-none');
$('#studentAddModal').modal('hide');
$('#saveStudent')[0].reset();
alertify.set('notifier','position', 'top-right');
alertify.success(res.message);
$('#myTable').load(location.href + " #myTable");
}else if(res.status == 500) {
alert(res.message);
}
}
});
});
$(document).on('click', '.editStudentBtn', function () {
var student_id = $(this).val();
$.ajax({
type: "GET",
url: "code.php?student_id=" + student_id,
success: function (response) {
var res = jQuery.parseJSON(response);
if(res.status == 404) {
alert(res.message);
}else if(res.status == 200){
$('#student_id').val(res.data.id);
$('#name').val(res.data.name);
$('#email').val(res.data.email);
$('#phone').val(res.data.phone);
$('#course').val(res.data.course);
$('#studentEditModal').modal('show');
}
}
});
});
$(document).on('submit', '#updateStudent', function (e) {
e.preventDefault();
var formData = new FormData(this);
formData.append("update_student", true);
$.ajax({
type: "POST",
url: "code.php",
data: formData,
processData: false,
contentType: false,
success: function (response) {
var res = jQuery.parseJSON(response);
if(res.status == 422) {
$('#errorMessageUpdate').removeClass('d-none');
$('#errorMessageUpdate').text(res.message);
}else if(res.status == 200){
$('#errorMessageUpdate').addClass('d-none');
alertify.set('notifier','position', 'top-right');
alertify.success(res.message);
$('#studentEditModal').modal('hide');
$('#updateStudent')[0].reset();
$('#myTable').load(location.href + " #myTable");
}else if(res.status == 500) {
alert(res.message);
}
}
});
});
$(document).on('click', '.viewStudentBtn', function () {
var student_id = $(this).val();
$.ajax({
type: "GET",
url: "code.php?student_id=" + student_id,
success: function (response) {
var res = jQuery.parseJSON(response);
if(res.status == 404) {
alert(res.message);
}else if(res.status == 200){
$('#view_name').text(res.data.name);
$('#view_email').text(res.data.email);
$('#view_phone').text(res.data.phone);
$('#view_course').text(res.data.course);
$('#studentViewModal').modal('show');
}
}
});
});
$(document).on('click', '.deleteStudentBtn', function (e) {
e.preventDefault();
if(confirm('Are you sure you want to delete this data?'))
{
var student_id = $(this).val();
$.ajax({
type: "POST",
url: "code.php",
data: {
'delete_student': true,
'student_id': student_id
},
success: function (response) {
var res = jQuery.parseJSON(response);
if(res.status == 500) {
alert(res.message);
}else{
alertify.set('notifier','position', 'top-right');
alertify.success(res.message);
$('#myTable').load(location.href + " #myTable");
}
}
});
}
});
</script>
</body>
</html>
In this file, we are writting the code to save data in php mysql.
<?php
require 'dbcon.php';
if(isset($_POST['save_student']))
{
$name = mysqli_real_escape_string($con, $_POST['name']);
$email = mysqli_real_escape_string($con, $_POST['email']);
$phone = mysqli_real_escape_string($con, $_POST['phone']);
$course = mysqli_real_escape_string($con, $_POST['course']);
if($name == NULL || $email == NULL || $phone == NULL || $course == NULL)
{
$res = [
'status' => 422,
'message' => 'All fields are mandatory'
];
echo json_encode($res);
return;
}
$query = "INSERT INTO students (name,email,phone,course) VALUES ('$name','$email','$phone','$course')";
$query_run = mysqli_query($con, $query);
if($query_run)
{
$res = [
'status' => 200,
'message' => 'Student Created Successfully'
];
echo json_encode($res);
return;
}
else
{
$res = [
'status' => 500,
'message' => 'Student Not Created'
];
echo json_encode($res);
return;
}
}
if(isset($_POST['update_student']))
{
$student_id = mysqli_real_escape_string($con, $_POST['student_id']);
$name = mysqli_real_escape_string($con, $_POST['name']);
$email = mysqli_real_escape_string($con, $_POST['email']);
$phone = mysqli_real_escape_string($con, $_POST['phone']);
$course = mysqli_real_escape_string($con, $_POST['course']);
if($name == NULL || $email == NULL || $phone == NULL || $course == NULL)
{
$res = [
'status' => 422,
'message' => 'All fields are mandatory'
];
echo json_encode($res);
return;
}
$query = "UPDATE students SET name='$name', email='$email', phone='$phone', course='$course'
WHERE id='$student_id'";
$query_run = mysqli_query($con, $query);
if($query_run)
{
$res = [
'status' => 200,
'message' => 'Student Updated Successfully'
];
echo json_encode($res);
return;
}
else
{
$res = [
'status' => 500,
'message' => 'Student Not Updated'
];
echo json_encode($res);
return;
}
}
if(isset($_GET['student_id']))
{
$student_id = mysqli_real_escape_string($con, $_GET['student_id']);
$query = "SELECT * FROM students WHERE id='$student_id'";
$query_run = mysqli_query($con, $query);
if(mysqli_num_rows($query_run) == 1)
{
$student = mysqli_fetch_array($query_run);
$res = [
'status' => 200,
'message' => 'Student Fetch Successfully by id',
'data' => $student
];
echo json_encode($res);
return;
}
else
{
$res = [
'status' => 404,
'message' => 'Student Id Not Found'
];
echo json_encode($res);
return;
}
}
if(isset($_POST['delete_student']))
{
$student_id = mysqli_real_escape_string($con, $_POST['student_id']);
$query = "DELETE FROM students WHERE id='$student_id'";
$query_run = mysqli_query($con, $query);
if($query_run)
{
$res = [
'status' => 200,
'message' => 'Student Deleted Successfully'
];
echo json_encode($res);
return;
}
else
{
$res = [
'status' => 500,
'message' => 'Student Not Deleted'
];
echo json_encode($res);
return;
}
}
?>