How to delete multiple rows with checkbox using ajax in PHP Laravel 5.6 with example

How to delete multiple rows with checkbox using ajax in PHP Laravel 5.6 with example

In this post we will give you information about How to delete multiple rows with checkbox using ajax in PHP Laravel 5.6 with example. Hear we will give you detail about How to delete multiple rows with checkbox using ajax in PHP Laravel 5.6 with exampleAnd how to use it also give you demo for it if it is necessary.

In this PHP Laravel 5.6 Tutorial, I am going to tell you how to delete multiple records/rows from the MySQL Table “categories” using checkbox in jQuery with example.

It’s very time consuming task to delete records one by one when there are too many records in the MySQL database table.

In this example, you will learn how to delete all records or multiple records on a single click by selecting checkbox using jQuery Ajax request in Laravel PHP.

You will get the confirmation alert box before deleting records from the MySQL database, if you want to learn how to implement a confirmation box before deleting any records then Click here


Step1: Create database table and model for this example

First, I will create a categories table by running following MySQL query :

CREATETABLE'categories' (
 'id'int(10) unsignedNOTNULLAUTO_INCREMENT,
 'category_name'varchar(255) COLLATE utf8mb4_unicode_ci NOTNULL,
 'category_details'varchar(255) COLLATE utf8mb4_unicode_ci DEFAULTNULL,
 'created_at'timestampNULLDEFAULTCURRENT_TIMESTAMP,
 'updated_at'datetimeDEFAULTNULL,
 PRIMARYKEY ('id')
) ENGINE=InnoDB AUTO_INCREMENT=7DEFAULTCHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci


Now for the testing purpose, I need some dummy records so run following MySQL insert query to insert some dummy data in the categories table, you can also use the seeder class to simple seed your database table with dummy data.

INSERTINTO'categories' ('category_name', 'category_details') VALUES

('PHP', 'PHP Tutorials'),

('MySQL', 'MySQL Tutorials'),

('HTML', 'HTML Tutorials'),

('CSS', 'CSS Tutorials'),

('Javascript', 'Javascript Tutorials');

Now as we know that each database table has a corresponding “Model” which is used to interact with that table in Laravel PHP Framework.

So, I will create a model class “Category.php” for categories table inside the app directory.

<?php

namespace App;

use IlluminateDatabaseEloquentModel;

classCategoryextends Model
{
    protected$fillable= [
        'category_name','category_details'
    ];
}




Step2: Add Routes

In this step, I will add following routes for display the table data and handle the request to delete data from the MySQL database table.



routes/web.php

Route::get('category', 'CategoryController@index');
Route::delete('category/{id}', ['as'=>'category.destroy','uses'=>'CategoryController@destroy']);
Route::delete('delete-multiple-category', ['as'=>'category.multiple-delete','uses'=>'CategoryController@deleteMultiple']);


Step 3: Create Category Controller

In this step, I will create a controller “CategoryController.php” in following path app/Http/Controllers/.


app/Http/Controllers/CategoryController.php

<?php

namespace AppHttpControllers;

use IlluminateHttpRequest;
use AppCategory;

classCategoryControllerextends Controller
{
    
    publicfunctionindex(Request $request){
        $categories=Category::get();
        return view('categories',compact('categories'));
    }

    publicfunctiondestroy(Request $request,$id){
        $category=Category::find($id);
        $category->delete();
        return back()->with('success','Category deleted successfully');
    }   

    publicfunctiondeleteMultiple(Request $request){
        $ids=$request->ids;
        Category::whereIn('id',explode(",",$ids))->delete();
        return response()->json(['status'=>true,'message'=>"Category deleted successfully."]);
        
    }

}


Step 4: Create a View Blade File

In this step, I will create a blade file categories.blade.php to list records and implement the jQuery ajax functionality to delete data.


resources/views/categories.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>PHP Laravel 5.6 - how to delete multiple rows in mysql using checkbox</title>

    <linkrel="stylesheet"href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-confirmation/1.0.5/bootstrap-confirmation.min.js"></script>
    <metaname="csrf-token"content="{{ csrf_token() }}">

</head>
<body>


<divclass="container">
    <h3>PHP Laravel 5.6 - delete multiple records by selecting checkboxes using javascript</h3>
    @if ($message = Session::get('success'))
    <divclass="alert alert-success">
        <p>{{ $message }}</p>
    </div>
    @endif
    <buttonstyle="margin: 5px;"class="btn btn-danger btn-xs delete-all"data-url="">Delete All</button>
    <tableclass="table table-bordered">
        <tr>
            <th><inputtype="checkbox"id="check_all"></th>
            <th>S.No.</th>
            <th>Category Name</th>
            <th>Category Details</th>
            <thwidth="100px">Action</th>
        </tr>
        @if($categories->count())
            @foreach($categories as $key => $category)
                <trid="tr_{{$category->id}}">
                    <td><inputtype="checkbox"class="checkbox"data-id="{{$category->id}}"></td>
                    <td>{{ ++$key }}</td>
                    <td>{{ $category->category_name }}</td>
                    <td>{{ $category->category_details }}</td>
                    <td>
                        {!! Form::open(['method' => 'DELETE','route' => ['category.destroy', $category->id],'style'=>'display:inline']) !!}

                            {!! Form::button('Delete', ['class' => 'btn btn-danger btn-xs','data-toggle'=>'confirmation','data-placement'=>'left']) !!}

                        {!! Form::close() !!}
                    </td>
                </tr>
            @endforeach
        @endif
    </table>
</div> 

</body>

<script type="text/javascript">
    $(document).ready(function () {

        $('#check_all').on('click', function(e) {
         if($(this).is(':checked',true))  
         {
            $(".checkbox").prop('checked', true);  
         } else {  
            $(".checkbox").prop('checked',false);  
         }  
        });

         $('.checkbox').on('click',function(){
            if($('.checkbox:checked').length == $('.checkbox').length){
                $('#check_all').prop('checked',true);
            }else{
                $('#check_all').prop('checked',false);
            }
         });

        $('.delete-all').on('click', function(e) {


            var idsArr = [];  
            $(".checkbox:checked").each(function() {  
                idsArr.push($(this).attr('data-id'));
            });  


            if(idsArr.length <=)  
            {  
                alert("Please select atleast one record to delete.");  
            }  else {  

                if(confirm("Are you sure, you want to delete the selected categories?")){  

                    var strIds = idsArr.join(","); 

                    $.ajax({
                        url:"{{ route('category.multiple-delete') }}",
                        type:'DELETE',
                        headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
                        data:'ids='+strIds,
                        success:function (data) {
                            if (data['status']==true) {
                                $(".checkbox:checked").each(function() {  
                                    $(this).parents("tr").remove();
                                });
                                alert(data['message']);
                            } else {
                                alert('Whoops Something went wrong!!');
                            }
                        },
                        error:function (data) {
                            alert(data.responseText);
                        }
                    });


                }  
            }  
        });

        $('[data-toggle=confirmation]').confirmation({
            rootSelector:'[data-toggle=confirmation]',
            onConfirm:function (event, element) {
                element.closest('form').submit();
            }
        });   
    
    });
</script>


</html>

Hope this code and post will helped you for implement How to delete multiple rows with checkbox using ajax in PHP Laravel 5.6 with example. if you need any help or any feedback give it in comment section or you have good idea about this post you can give it comment section. Your comment will help us for help you more and improve us. we will give you this type of more interesting post in featured also so, For more interesting post and code Keep reading our blogs

For More Info See :: laravel And github

Leave a Comment

Your email address will not be published. Required fields are marked *

80  +    =  89

We're accepting well-written guest posts and this is a great opportunity to collaborate : Contact US