El plugin Datatable se puede rellenar usando datos via Ajax nativamente desde las opciones de configuracion, en este articulo veremos el ejemplo de como hacer y como debe estar organizado los datos JSON para mostrarse en la tabla.
Vamos a crear un ejemplo desde CERO por lo que necesitaremos lo siguiente:
- Bootstrap – https://getbootstrap.com/
- Jquery – https://jquery.com/
- Datatables – https://datatables.net/
Al final les dejo el ejemplo completo con los archivos y las librerias.
Base de Datos
Es importante tener una base de datos a la cual conectarnos, y una tabla con datos para mostrar.
En mi caso usare una base de datos que siempre uso en mis ejemplos.
create database prueba; use prueba; CREATE TABLE `persona` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `phone` varchar(255) DEFAULT NULL, `created_at` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4;
Es una tabla basica para contactos, que tiene 4 campos: id, name, phone, created_at.
Codigo HTML
El codigo HTML es la base, la pagina, el documento de la pagina, donde incluiremos todas las librerias que ya descargamos, el archivo se llamara index.html.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Datatables Ajax</title> <!-- INCLUIR LAS LIBRERIAS --> <link rel="stylesheet" type="text/css" href="bootstrap/css/bootstrap.min.css"> <link rel="stylesheet" type="text/css" href="datatables/datatables.min.css"> <script type="text/javascript" src="jquery.min.js"></script> </head> <body> <br> <div class="container"> <div class="row"> <div class="col-md-12"> <!-- CREAR UNA TABLA PARA MOSTRAR LOS DATOS --> <table class="table table-responsive table-bordered" id="mytable"> <thead> <td>Id</td> <th>Nombre</th> <th>Telefono</th> <th>Creacion</th> </thead> <tr> <td>0</td> <td>Agustin</td> <td>123</td> <td>2222-22-22 22:22:00</td> </tr> </table> </div> </div> </div> <!-- SCRIPT PARA ACTIVAR EL PLUGIN DATATABLES --> <script type="text/javascript" > $(document).ready(function(){ $("#mytable").DataTable({ ajax: "loaddata.php" }); }); </script> <!-- INCLUIR LAS LIBRERIAS QUE FALTAN --> <script type="text/javascript" src="datatables/datatables.min.js"></script> </body> </html>
El archivo index.html lo que hacemos es incluir las librerias, crear la tabla que usaremos en datatables, despues activar el plugin datatables, incluir las librerias que faltan y listo.
Al momento de activar el plugin Datatable hacemos llamado a un archivo via ajax, este archivo es loaddata.php que sera el archivo que nos devolvera un paquete de datos JSON para despues ser agregado y mostrado en la vista de la tabla.
Codigo PHP
Ahora vamos a describir el archivo loaddata.php
<?php // Conectar a la base de datos $con = new mysqli("localhost","evilnapsis","A123456Z","prueba"); // Crear una variable para almacenar los datos $data_array = array(); // SQL para obtener los datos $sql = "select * from persona"; // Ejeuctar el SQL $query = $con->query($sql); // Recorrer los resultados while($data = $query->fetch_object()){ // Poner los datos en un array en el orden de los campos de la tabla $data_array[] = array($data->id, $data->name, $data->phone, $data->created_at); } // crear un array con el array de los datos, importante que esten dentro de : data $new_array = array("data"=>$data_array); // crear el JSON apartir de los arrays echo json_encode($new_array); ?>
Es importante en las lineas 12 y 13 colocar los valores en el array en el orden y cantidad que se van a mostrar en la tabla.
Es importante mantener el formato de los arrays, de otra manera no va a funcionar.
Codigo JSON
Este es un ejemplo del resultado JSON que debe retornar el archivo loaddata.php
{"data":[["1","Agustin","9371331142","2022-09-17 10:08:30"],["2","Nombre","Telefono","2022-09-17 10:15:54"],["3","Nombre","934118.149903153","2022-09-17 10:21:07"]]}
Y listo ya debe funcionar y cargar los datos de la base de datos via ajax.
Resultado
Este es el resultado.
Descargar
A continuacion el enlace de descarga para las librerias y los archivos del ejemplo.
Link: https://www.dropbox.com/s/da3a3jrnlh4wi4n/datatables1.zip?dl=0
Favor de reportar enlaces caidos, que no funcionen, que redirijan a donde no deben para corregirlos y seguir ayudandoles, se les agradecera.