Datatables


/routes/web.php
use App\Http\Controllers\StudentController;
..
Route::get('/datatables-test', function () { return view('database/datatables-test'); });
Route::get('/datatables-response', [StudentController::class, 'datatables_response']);

/app/resources/views/database/datatables-test.blade.php
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.datatables.net/1.10.16/css/dataTables.bootstrap.min.css" rel="stylesheet"/>
<script src="https://code.jquery.com/jquery-3.7.1.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdn.datatables.net/r/dt/dt-1.10.9/datatables.min.js"></script>
<script src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.10.16/js/dataTables.bootstrap.min.js"></script>
<style> .right-it { text-align: right; }</style>
<script>
    jQuery(function() {
        var dataTable = jQuery('#student-grid').DataTable({
            "responsive": true,
            "processing": true,
            "serverSide": true,
            "pageLength": 10,
            "ajax": {
                url: "/datatables-response", 
                data: { table_view: 'students' },
                type: 'post',  
            },
            columns: [
                {data: 'name', title: 'Name'},
                {data: 'email', title: 'Email'},
                {data: 'gender', title: 'Gender', searchable: false }
                // {data: 'salary', orderable: false, searchable: false, className: 'right-it'},
            ],                
        });
    });        
</script>

<div class="container">
    <h3>Datatables With Codeigniter</h3><br />
    <table id="student-grid" class="table table-striped table-bordered" style="width:100%"></table>
</div>

/app/Http/Controllers/Student.php
public function datatables_response(Request $request) { 
    $sql = 'SELECT * FROM '.$request['table_view'];
    $query = DB::select($sql);
    $totalData = count($query);
    $totalFiltered = $totalData;  

    $columns = array();
    for($i = 0; $i < count($request['columns']); $i++) {
        $columns[] = $request['columns'][$i]['data'];
    }

    $sql .= " WHERE 1 = 1";
    if (!empty($request['search']['value'])) {   
        $sql .= " AND ( " . $columns[0] . " LIKE '%" . $request['search']['value'] . "%' ";
        for($i = 1; $i < count($columns); $i++) {
            $sql .= " OR " . $columns[$i] . " LIKE '" . $request['search']['value'] . "%' ";
        }
        $sql .= " ) ";
    }

    $query = DB::select($sql);
    $totalFiltered = count($query);

    $sql .= " ORDER BY " . $columns[$request['order'][0]['column']] . "   " . $request['order'][0]['dir'] . "   LIMIT " . $request['start'] . " ," . $request['length'] . "   ";
    $query = DB::select($sql);

    $rows = array();
    foreach ($query as $row) {
        $rows[] = $row;
    }

    $data =  array( "draw" => intval($request['draw']), "recordsTotal" => intval($totalData), "recordsFiltered" => intval($totalFiltered),  "data" => $rows );
    echo json_encode($data);
} 

Test Students Table Script
CREATE TABLE `students` (
  `id` bigint(20) UNSIGNED NOT NULL,
  `name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `gender` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

ALTER TABLE `students`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `user_table_email_unique` (`email`);
ALTER TABLE `students`
  MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=107;

INSERT INTO `students` (`id`, `name`, `email`, `gender`) VALUES
(1, 'Vella KassulkeV', 'phoeger@yahoo.com', 'Female'),
(2, 'Herbert Abernathy', 'fluettgen@yahoo.com', 'Male'),
(3, 'Glenna Murphy', 'pkuhic@hotmail.com', 'Male'),
(4, 'Ines Fadel', 'eveline.mante@gmail.com', 'Female'),
(5, 'Audreanne Wolf', 'maryse.cartwright@yahoo.com', 'Female'),
(6, 'Sydni Emard', 'hills.evalyn@hotmail.com', 'Male'),
(7, 'Imelda Prosacco', 'colton55@yahoo.com', 'Female'),
(8, 'Alec Hansen', 'casey.wehner@gmail.com', 'Male'),
(9, 'Shanny O\'Connell', 'kirlin.leopoldo@hotmail.com', 'Male'),
(10, 'Elouise HandV', 'phaley@hotmail.com', 'Female'),
(11, 'Augustus Denesik', 'rhammes@yahoo.com', 'Female'),
(12, 'Emiliano Schaden Sr.', 'selena.jakubowski@gmail.com', 'Female'),
(13, 'Fabiola Bartoletti', 'bonita.donnelly@hotmail.com', 'Female'),
(14, 'Jaiden Farrell', 'hermann.ida@gmail.com', 'Female'),
(15, 'Neha Kunde', 'langosh.colton@gmail.com', 'Male'),
(16, 'Troy Schamberger', 'gparker@hotmail.com', 'Male'),
(17, 'Kadin Wolf', 'cwhite@yahoo.com', 'Male'),
(18, 'Timothy Schneider', 'jaylin62@yahoo.com', 'Female'),
(19, 'Missiviane Gleichner', 'efren.lang@gmail.com', 'Male'),
(20, 'Nya Harber', 'tkutch@yahoo.com', 'Female'),
(21, 'Emmanuelle Zieme', 'gustave.kemmer@gmail.com', 'Male'),
(22, 'Cheyanne Schroeder', 'ahmed.friesen@hotmail.com', 'Female'),
(23, 'Raleigh Upton', 'temmerich@hotmail.com', 'Female'),
(24, 'Carey Blick', 'haley.elinore@hotmail.com', 'Female'),
(25, 'Lennie Lind', 'barton.jazmin@gmail.com', 'Female'),
(26, 'Riley Gibson', 'vhayes@gmail.com', 'Female'),
(27, 'Mario Toy', 'justen.nienow@hotmail.com', 'Female'),
(28, 'Tatum Tromp', 'wisozk.celia@hotmail.com', 'Female'),
(29, 'Rosendo O\'Connell', 'chad69@gmail.com', 'Female'),
(30, 'Donald Paucek', 'mertz.gerhard@hotmail.com', 'Female'),
(31, 'Jevon Feil', 'oschulist@gmail.com', 'Female'),
(32, 'Miss Savanna Hickle', 'willis.kuhn@hotmail.com', 'Male'),
(33, 'Demetris Crooks', 'bogan.green@hotmail.com', 'Male'),
(34, 'Major Nienow', 'rudy.haag@gmail.com', 'Male'),
(35, 'Alexander Braun', 'carli.witting@hotmail.com', 'Male'),
(36, 'Colt Dickens', 'brakus.rebekah@hotmail.com', 'Female'),
(37, 'Alden Hane', 'larkin.ena@hotmail.com', 'Male'),
(38, 'Maximus Lesch', 'lucienne93@hotmail.com', 'Male'),
(39, 'Chanel Heller', 'tiffany.bechtelar@gmail.com', 'Male'),
(40, 'Merlin Koch', 'cassidy36@yahoo.com', 'Female'),
(41, 'Josianne Halvorson', 'gdouglas@yahoo.com', 'Female'),
(42, 'Selmer McKenzie', 'collier.erna@gmail.com', 'Female'),
(43, 'Vernice Schmeler', 'senger.felipa@hotmail.com', 'Male'),
(44, 'Diana Jaskolski', 'ymueller@hotmail.com', 'Male'),
(45, 'Michael Gottlieb', 'leonard.torp@hotmail.com', 'Male'),
(46, 'Pauline Lynch', 'dietrich.kennedi@yahoo.com', 'Male'),
(47, 'Hershel Eichmann', 'becker.martine@yahoo.com', 'Male'),
(48, 'Tyrel Denesik', 'gfisher@hotmail.com', 'Male'),
(49, 'Manley Murazik', 'hickle.laurie@yahoo.com', 'Female'),
(50, 'Alta Hauck', 'bella73@gmail.com', 'Female'),
(51, 'Kaela Mitchell', 'orn.neoma@gmail.com', 'Male'),
(52, 'Adam Wilderman', 'murazik.wilhelmine@gmail.com', 'Female'),
(53, 'Micaela Farrell', 'kutch.turner@yahoo.com', 'Male'),
(54, 'Angie Lynch', 'hwest@gmail.com', 'Male'),
(55, 'Dixie Kuhn', 'mae.lebsack@yahoo.com', 'Female'),
(56, 'Rudolph Kozey', 'legros.micheal@hotmail.com', 'Female'),
(57, 'Jazmyne Harvey Jr.', 'leo.kuhic@gmail.com', 'Male'),
(58, 'Mollie Luettgen', 'schristiansen@yahoo.com', 'Female'),
(59, 'Magdalena Beer', 'bartell.kassandra@gmail.com', 'Male'),
(60, 'Perry Harris', 'dariana.labadie@yahoo.com', 'Female'),
(61, 'Unique Schulist', 'maxime.koepp@yahoo.com', 'Female'),
(62, 'Magnolia Jacobi', 'greg.swaniawski@gmail.com', 'Female'),
(63, 'Allie Olson', 'qgrady@hotmail.com', 'Male'),
(64, 'Lilyan Boyle', 'wiegand.kamren@yahoo.com', 'Female'),
(65, 'Lane Lakin', 'hlynch@gmail.com', 'Male'),
(66, 'Larue Tromp', 'tremblay.shyanne@yahoo.com', 'Male'),
(67, 'Shana Gleichner', 'floyd18@yahoo.com', 'Male'),
(68, 'Laurie Lemke', 'adella06@yahoo.com', 'Female'),
(69, 'D\'angelo Turcotte', 'tschaden@yahoo.com', 'Male'),
(70, 'Miss Bridgette Jacobs', 'erau@yahoo.com', 'Female'),
(71, 'Warren Windler', 'hhuels@gmail.com', 'Female'),
(72, 'Hester Greenfelder', 'cleveland.schneider@gmail.com', 'Female'),
(73, 'Ethelyn Russel', 'rtremblay@yahoo.com', 'Female'),
(74, 'Carole Cruickshank', 'marjolaine.krajcik@gmail.com', 'Female'),
(75, 'Neva Weber', 'lexie.sauer@gmail.com', 'Female'),
(76, 'Braulio Keeling', 'mackenzie23@yahoo.com', 'Male'),
(77, 'Roderick Denesik', 'joel.schoen@hotmail.com', 'Male'),
(78, 'Heidi Bahringer', 'ezra17@hotmail.com', 'Male'),
(79, 'Eino O\'Hara', 'noelia.rolfson@yahoo.com', 'Female'),
(80, 'Kenny Bernhard', 'ricky.padberg@gmail.com', 'Female'),
(81, 'Vernie Dickinson', 'cassidy.larkin@hotmail.com', 'Female'),
(82, 'Janet Kovacek', 'ibergnaum@gmail.com', 'Male'),
(83, 'Kiana Altenwerth', 'orlo33@yahoo.com', 'Female'),
(84, 'Tracy Kris', 'tyreek48@yahoo.com', 'Male'),
(85, 'Alverta Gleason', 'cathryn.white@gmail.com', 'Male'),
(86, 'Emerson McLaughlin', 'tromp.mauricio@hotmail.com', 'Female'),
(87, 'Georgette Corkery', 'carolina.breitenberg@yahoo.com', 'Female'),
(88, 'Damon Bechtelar', 'elijah01@gmail.com', 'Female'),
(89, 'Ike Douglas', 'yrunolfsdottir@gmail.com', 'Female'),
(90, 'Hal Mraz', 'champlin.haleigh@hotmail.com', 'Male'),
(91, 'Lauriane Borer', 'jacobs.vernie@yahoo.com', 'Female'),
(92, 'Hettie Price DVM', 'zoey.cole@yahoo.com', 'Male'),
(93, 'Maci Block', 'brent.moen@yahoo.com', 'Female'),
(94, 'Doyle Zieme', 'milan06@yahoo.com', 'Female'),
(95, 'Jerome Reynolds', 'trantow.judge@hotmail.com', 'Female'),
(96, 'Casey Bradtke', 'augustus.pagac@hotmail.com', 'Male'),
(97, 'Lesley Rippin Jr.', 'jimmie29@hotmail.com', 'Female'),
(98, 'Kira Deckow', 'vhaag@hotmail.com', 'Male'),
(99, 'Arch Sporer', 'ikilback@hotmail.com', 'Male'),
(100, 'Brandyn Bogan', 'abernathy.penelope@hotmail.com', 'Male'),
(101, 'John Smith', 'johnsmith@gmail.com', 'Male'),
(102, 'Peter Parker', 'peterparker@gmail.com', 'Female'),
(103, 'Donna Huber', 'donnahuber@mailinator.com', 'Female'),
(105, 'Jim Perry', 'jim_perry@gmail.com', 'Male'),
(106, 'Adams Smith', 'adamsmith@gmail.com', 'Male');



Datatables Test