Table of Contents
Getting Started
Please take note that CSS and jQuery used in this tutorial are hosted, so you need an internet connection for them to work.
Creating a Database
The first step is to create our database.
1. Open phpMyAdmin.
2. Click databases, create a database and name it as crud_oop.
3. After creating a database, click the SQL and paste the below codes. See image below for detailed instruction.
CREATE TABLE `member` ( `memberid` INT(11) NOT NULL AUTO_INCREMENT, `firstname` VARCHAR(50) NOT NULL, `lastname` VARCHAR(50) NOT NULL, PRIMARY KEY(`memberid`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Creating a Connection
Next, we create our connection to our database. This will serve as the bridge between our forms and database. We name this as conn.php.
<?php $conn = new mysqli("localhost", "root", "", "crud_oop"); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } ?>
index.php
We create our index that contains our table.
<!DOCTYPE html> <html> <head> <title>PHP - OOP CRUD Operation using AJAX/jQuery</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" /> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> </head> <body> <body> <div class="container"> <div style="height:50px;"></div> <div class="well" style="margin-left:auto; margin-right:auto; padding:auto; width:70%;"> <span style="font-size:25px; color:blue"><strong>PHP - OOP CRUD Operation using AJAX/jQuery</strong></span> <span class="pull-right"><a id="add" style="cursor:pointer;" class="btn btn-primary"><span class="glyphicon glyphicon-plus"></span> Add New</a></span> <div style="height:15px;"></div> <div id="table"></div> <div id="alert" class="alert alert-success" style="display:none;"> <center><span id="alerttext"></span></center> </div> </div> <?php include('modal.php'); ?> <script src="custom.js"></script> </div> </body> </html>
custom.js
This contains our AJAX and jQuery codes.
$(document).ready(function(){ showTable(); //add $('#add').click(function(){ $('#addnew').modal('show'); $('#addForm')[0].reset(); }); $('#addbutton').click(function(){ var first = $('#firstname').val(); var last = $('#lastname').val(); if(first!='' && last!==''){ var addForm = $('#addForm').serialize(); $.ajax({ type: 'POST', url: 'add.php', data: addForm, success:function(){ $('#addnew').modal('hide'); $('#addForm')[0].reset(); showTable(); $('#alert').slideDown(); $('#alerttext').text('Member Added Successfully'); } }); } else{ alert('Please input both Fields') } }); // //edit $(document).on('click', '.edit', function(){ var memid = $(this).data('id'); var first = $('#first'+memid).text(); var last = $('#last'+memid).text(); $('#editmem').modal('show'); $('#efirstname').val(first); $('#elastname').val(last); $('#editbutton').val(memid); }); $('#editbutton').click(function(){ var memid = $(this).val(); var editForm = $('#editForm').serialize(); $.ajax({ type: 'POST', url: 'edit.php', data: editForm + "&memid="+memid, success:function(){ $('#editmem').modal('hide'); $('#editForm')[0].reset(); showTable(); $('#alert').slideDown(); $('#alerttext').text('Member Updated Successfully'); } }); }); // //delete $(document).on('click', '.delete', function(){ var memid = $(this).data('id'); var first = $('#first'+memid).text(); $('#delmem').modal('show'); $('#dfirstname').text(first); $('#delbutton').val(memid); }); $('#delbutton').click(function(){ var memid = $(this).val(); $.ajax({ type: 'POST', url: 'delete.php', data: { memid: memid, }, success:function(){ $('#delmem').modal('hide'); showTable(); $('#alert').slideDown(); $('#alerttext').text('Member Deleted Successfully'); } }); }); }); function showTable(){ $.ajax({ type: 'POST', url: 'fetch.php', data: { fetch: 1 }, success:function(data){ $('#table').html(data); } }); }
fetch.php
This is our code in fetching table data from our database.
<?php include('conn.php'); if(isset($_POST['fetch'])){ ?> <table class="table table-striped table-bordered table-hover"> <thead> <th>Firstname</th> <th>Lastname</th> <th>Action</th> </thead> <tbody> <?php $query=$conn->query("select * from `member`"); while($row=$query->fetch_array()){ ?> <tr> <td><span id="first<?php echo $row['memberid']; ?>"><?php echo $row['firstname']; ?></span></td> <td><span id="last<?php echo $row['memberid']; ?>"><?php echo $row['lastname']; ?></span></td> <td> <a style="cursor:pointer;" class="btn btn-warning edit" data-id="<?php echo $row['memberid']; ?>"><span class="glyphicon glyphicon-edit"></span> Edit</a> || <a style="cursor:pointer;" class="btn btn-danger delete" data-id="<?php echo $row['memberid']; ?>"><span class="glyphicon glyphicon-trash"></span> Delete</a> </td> </tr> <?php } ?> </tbody> </table> <?php } ?>
modal.php
This contains our add, edit and delete modal.
<!-- Add New --> <div class="modal fade" id="addnew" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <center><h4 class="modal-title" id="myModalLabel">Add New Member</h4></center> </div> <div class="modal-body"> <div class="container-fluid"> <form id="addForm"> <div class="row"> <div class="col-md-2"> <label class="control-label" style="position:relative; top:7px;">Firstname:</label> </div> <div class="col-md-10"> <input type="text" class="form-control" name="firstname" id="firstname"> </div> </div> <div style="height:10px;"></div> <div class="row"> <div class="col-md-2"> <label class="control-label" style="position:relative; top:7px;">Lastname:</label> </div> <div class="col-md-10"> <input type="text" class="form-control" name="lastname" id="lastname"> </div> </div> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal"><span class="glyphicon glyphicon-remove"></span> Cancel</button> <button type="button" id="addbutton" class="btn btn-primary"><span class="glyphicon glyphicon-floppy-disk"></span> Save</a> </form> </div> </div> </div> </div> <!-- Edit --> <div class="modal fade" id="editmem" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <center><h4 class="modal-title" id="myModalLabel">Edit Member</h4></center> </div> <div class="modal-body"> <div class="container-fluid"> <form id="editForm"> <div class="row"> <div class="col-md-2"> <label class="control-label" style="position:relative; top:7px;">Firstname:</label> </div> <div class="col-md-10"> <input type="text" class="form-control" name="efirstname" id="efirstname"> </div> </div> <div style="height:10px;"></div> <div class="row"> <div class="col-md-2"> <label class="control-label" style="position:relative; top:7px;">Lastname:</label> </div> <div class="col-md-10"> <input type="text" class="form-control" name="elastname" id="elastname"> </div> </div> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal"><span class="glyphicon glyphicon-remove"></span> Cancel</button> <button type="button" id="editbutton" class="btn btn-warning"><span class="glyphicon glyphicon-check"></span> Update</a> </form> </div> </div> </div> </div> <!-- Delete --> <div class="modal fade" id="delmem" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <center><h4 class="modal-title" id="myModalLabel">Delete Member</h4></center> </div> <div class="modal-body"> <div class="container-fluid"> <h5><center>Firstname: <strong><span id="dfirstname"></span></strong></center></h5> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal"><span class="glyphicon glyphicon-remove"></span> Cancel</button> <button type="button" id="delbutton" class="btn btn-danger"><span class="glyphicon glyphicon-trash"></span> Delete</button> </div> </div> </div> </div>
add.php
This is our code in adding data to our database.
<?php include('conn.php'); if(isset($_POST['firstname'])){ $firstname=$_POST['firstname']; $lastname=$_POST['lastname']; $conn->query("insert into member (firstname, lastname) values ('$firstname', '$lastname')"); } ?>
edit.php
This is our code in updating existing row in our database.
<?php include('conn.php'); if(isset($_POST['efirstname'])){ $firstname=$_POST['efirstname']; $lastname=$_POST['elastname']; $memid=$_POST['memid']; $conn->query("update member set firstname='$firstname', lastname='$lastname' where memberid='$memid'"); } ?>
delete.php
Lastly, our code in deleting rows.
<?php include('conn.php'); if(isset($_POST['memid'])){ $memid=$_POST['memid']; $conn->query("delete from member where memberid='$memid'"); } ?>
That ends this tutorial. If you have any comment, suggestion or question, feel free to write it below or message me. Happy Coding!