Hi Guys, Today we are going to see How to use AngularJS Add, Edit, Update, Delete using Bootstrap modal with DataTable in PHP. AngularJS is a very powerful JavaScript Framework. It is used in Single Page Application projects. By using this application without refresh the page you can get server-side response. In this tutorial, I have created a simple way to learn angular js curd operation. Follow the below simple setup process.
Follow below steps :
- Setup database connection
- Load AngularJS and Bootstrap CDN
- Load Html Template File
- AngularJs Controller Setup
- Server Side Scripting
Step 1:- Database Connection
Create a new table as users_information with below structure. insert some dumping data. This data will load bootstrap model.
CREATE TABLE `users_information` ( `id` int(11) NOT NULL, `name` varchar(50) NOT NULL, `email` varchar(100) NOT NULL, `position` varchar(50) NOT NULL, `dob` date NOT NULL )
DB Configuration
create a new file as config.php then paste the copied below code inside the file.<?php $user = 'root'; $password = ''; $database = 'database'; $db = new mysqli('localhost',$user,$password,$database); if(!$db): echo 'Your database connection not exist'; exit; endif; ?>
Step 2:- Load Bootstrap and Angular CSS and JS
Load Bootstrap CDN file to your <HEAD> tag. ng- app - The ng-app directive tells AngularJS that this is the root element of the AngularJS application.
<html ng-app="my_app"> <head> <title>AngularJS Add,Edit,Update,Delete using Boostrap modal </title> <link href='http://www.mostlikers.com/favicon.ico' rel='icon' type='image/x-icon'/> <!--Bootstrap CSS --> <link href="css/bootstrap.min.css" rel="stylesheet"> <link href="css/dataTables.bootstrap.min.css" rel="stylesheet"> <link href="css/custom-style.css" rel="stylesheet"> <!--/Bootstrap CSS --> <!--JQuery DataTables--> <script type="text/javascript" src="//code.jquery.com/jquery-1.12.4.js"></script> <script src="js/bootstrap/bootstrap.min.js"></script> <script type="text/javascript" src="js/dataTables/jquery.dataTables.min.js"></script> <script type="text/javascript" src="js/dataTables/dataTables.bootstrap.min.js"></script> <!--/JQuery DataTables --> <!--Angualrjs --> <script type="text/javascript" src="js/angularjs/angular.min.js"></script> <script type="text/javascript" src="js/angularjs/angular-datatables.min.js"></script> <script type="text/javascript" src="js/angularjs/users_dump.angular.js"></script> <!--/Angualrjs --> </head>
Load HTML Template
Create a new index.html file load angular ajax call dynamic data responses.
- data-ng-init - execute the angular controller function on page load. Here I am using a usersInformation() function to get all user information server side response.
- ng-repeat - make a loop for JSON object data. ex : users_list scope value (user in user_list) user scope object value.
- {{ }} or ng-bind - To bind the JSON object value. {{user.dynmaic value name}}
<div ng-controller="users" data-ng-init="usersInformation()" class="container"> <div class="col-md-12"> <div class="add_panel"> <a ng-click="addModal();" class="model_form btn btn-primary"> <i class="glyphicon glyphicon-plus"></i> Add User</a> <div class="clearfix"></div> </div> <div class="table-responsive"> <table datatable="ng" id="examples" class="table table-striped table-bordered" cellspacing="0" width="100%"> <thead> <tr> <th>S.No</th> <th>Name</th> <th>Email</th> <th>Position</th> <th>Data Of Birth</th> <th>Action</th> </tr> </thead> <tbody> <tr ng-repeat="user in users_list"> <td>{{$index + 1}}</td> <td>{{user.name}}</td> <td>{{user.email}}</td> <td>{{user.position}}</td> <td>{{user.dob | date: "yyyy-MM-dd"}}</td> <td> <a href="javascript:void(0);" ng-click="EditModal(user);"> <i class="glyphicon glyphicon-pencil"></i> </a> <a href="javascript:void(0);" ng-click="DeleteModal(user)"> <i class="glyphicon glyphicon-remove"></i> </a> </td> </tr> </tbody> </table> </div> <div ng-if="success_msg" class="success_pop alert alert-success"> <a href="#" class="close" data-dismiss="alert" aria-label="close">×</a> <strong> {{success_msg}} </strong> </div> </div> </div>
Step 3:- Angularjs Controller
Create a new controller file user.angular.js load curd functions.
- First, create app module name (my_app) to the angular control.
- Load the curd function usersInformation () - Get server side response using ajax call
- $scope.addModal - Load boostrap modal function. Here i am calling new usersInformation add boostrap modal.
- $scope.UserAddUpdate - After submit form, $scope value post to the server side. (both add and edit in singal function)
- $scope.EditModal - Loading 1 row value to boostrap modal, angular.copy() - Copy the ng repeat row value.
- $scope.DeleteModal - Delete ng repeat object value by using this $scope.users_list.splice(index, 1); code.
var myapp = angular.module('my_app',['datatables']); myapp.controller('users', function($scope,$http){ $scope.master = {}; $scope.usersInformation = function () { $http({ method: 'GET', url: 'get_users.php' }) .then(function (success){ $scope.users_list = []; $scope.users_list =success.data; },function (error){ console.log(error); }); };
$scope.addModal = function() { $scope.users_form = angular.copy($scope.master); $scope.form_name = 'Add New User Information'; $('#form_modal').modal('show'); };
$scope.UserAddUpdate = function (users_form) { var users_information = users_form; $http({ method: 'POST', url: 'UserAddUpdate.php', data: users_information, }).then(function(response) { $scope.usersInformation(); $scope.success_msg = response.data; },function (error){ console.log(error); }); $('#form_modal').modal('hide'); };
$scope.EditModal = function(user) { $scope.form_name = 'Edit User Information'; var edit_form = {}; angular.copy(user, edit_form); $scope.users_form = edit_form; $scope.users_form.dob = new Date($scope.users_form.dob); $('#form_modal').modal('show'); };
$scope.DeleteModal = function(user) { var r = confirm("Are you sure want to delete ?"); if (r == true) { var users_record_id = user.id; $http({ method: 'POST', url: 'UserDelete.php', data: users_record_id, }).then(function(response) { var index = $scope.users_list.indexOf(user); $scope.users_list.splice(index, 1); $scope.success_msg = response.data; },function (error){ console.log(error); }); } }; });
Step 4:- PHP Script Response
You can use any PHP framework,.Net framework, Webservices For Server side curd operation. Just give your response in JSON format the above angular script will work. I have some little bit knowledge in PHP Script. So I am using PHP Script for Add, edit, delete usersInformation. For a beginner, I would suggest PHP curd operation (PHP Curd operation with bootstrap modal) tutorial.Get Users Information(get_users.php)
Fetch all the rows in the users_information table. Convert PHP response has JSON parse.
<?php include('config/config.php'); $users_information = array(); if ($result = $db->query("SELECT * FROM users_information")) { while($row = $result->fetch_array(MYSQL_ASSOC)) { $users_information[] = $row; } echo json_encode($users_information); } ?>
New user Add/Update (UserAddUpdate.php)
<?php include('config/config.php'); if($_SERVER['REQUEST_METHOD'] == 'POST') { $ajax_data = json_decode(file_get_contents('php://input'), true); $name = $db->real_escape_string($ajax_data['name']); $email = $db->real_escape_string($ajax_data['email']); $position = $db->real_escape_string($ajax_data['position']); $date = new DateTime($db->real_escape_string($ajax_data['dob'])); $user_dob = $date->format('Y-m-d'); $id = (@$ajax_data['id']!="") ? $db->real_escape_string(@$ajax_data['id']) : ''; if($id!="") : $query = " UPDATE users_information SET name= '$name', email='$email', position='$position',dob='$user_dob' WHERE id=$id"; $msg = "Successfully Updated Your Record"; else: $query = " INSERT INTO users_information SET name= '$name', email='$email', position='$position',dob='$user_dob'"; $msg = "Successfully Inserted Your Record"; endif; $sql = $db->query($query); echo $msg; } ?>
Delete user information (UserDelete.php)
<?php include('config/config.php'); if($_SERVER['REQUEST_METHOD'] == 'POST') { $ajax_data = json_decode(file_get_contents('php://input'), true); $id = ($ajax_data!="") ? $db->real_escape_string($ajax_data) : ''; if($id!="") : $query = "DELETE FROM users_information WHERE id=$id"; $sql = $db->query($query); $msg = "Successfully Deleted Your Record"; else: $msg = "Something went wrong Please Check Reload your File."; endif; echo $msg; } ?>
Bootstrap Modal
Bootstrap model form model copy and paste this code to index.php file. This model design won't visible until to call the jquery function.<form method="post" ng-submit="UserAddUpdate(users_form);" id="cat_form"> <div class="modal-body with-padding"> <div class="form-group"> <div class="row"> <div class="col-sm-12"> <label>Name :</label> <input type="text" name="name" ng-model="users_form.name" id="name" required="required" class="form-control"> </div> </div> </div> <div class="form-group"> <div class="row"> <div class="col-sm-12"> <label>Email :</label> <input type="email" name="email" ng-model="users_form.email" id="email" required="required" class="form-control email"> </div> </div> </div> <div class="form-group"> <div class="row"> <div class="col-sm-12"> <label>Position :</label> <input type="text" name="position" ng-model="users_form.position" id="position" required="required" class="form-control"> </div> </div> </div> <div class="row"> <div class="col-sm-12"> <label>Birthday :</label> <input type="date" placeholder="yyyy-MM-dd" id="dob" max="<?php echo date('Y-m-d'); ?>" ng-model="users_form.dob" class="form-control" required="required" name="dob"> </div> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-warning" data-dismiss="modal">Cancel</button> <button type="submit" name="form_data" class="btn btn-primary">Submit</button> </div> </form>
OUTPUT
Try Your self >>
nice
ReplyDeleteHow much are you making monthly from this blog ?
ReplyDeletegreate work
ReplyDeletetable select not working
ReplyDeleteHi Kartick how to link web site to database
ReplyDelete