DataTables

¿Cómo usar DataTables jQuery plugin?

Implementación DataTables serverSide con MySQL

¿Cómo usar DataTables jQuery plugin?. – En este artículo veremos las ventajas de este plugín y cómo usar con la característica serverSide que esta la más recomendada para trabajar con grandes cantidades de información extraídas de MySQL y lo más importante en el menor tiempo posible.

¿Qué es DataTables y Cómo usar DataTables jQuery?

Datatables es una extensión de jQuery que nos permite generar dinámicas tablas con paginado, búsqueda, ordenar por columnas, etc. En la misma página oficial de datatables tienes múltiples ejemplos que podemos usarlo en nuestros proyectos web.

¿Cómo usar DataTables jQuery?

Cómo usar DataTables jQuery plugin
Cómo usar DataTables jQuery plugin

VENTAJAS DE USAR DATATABLES

Entre las principales ventajas que nos brinda el plugín DataTables son:

  • Paginación interactiva.
  • Procesa grandes volúmenes de registros
  • Herramienta de búsqueda instantánea.
  • Responsiva para móviles
  • Se integra con base de datos.
  • Opciones de descarga e Impresión dinámica
  • Procesa tablas estáticas y/o dinámicas.
  • Ordenamiento por columnas
  • Soporta varias fuentes de datos como: DOM, JavaScript, Ajax, etc.
  • Se integra fácilmente con jQuery UI, Bootstrap o Foundation.
  • Traducir a cualquier idioma.

¿Cómo inicializar DataTables correctamente?

Primero: Declarar librerías necesarias

En el HTML debemos incluir los JavaScript necesarios e inicializar nuestra tabla. para ello, se debe de incluir necesariamente dentro de la etiqueta <head>. Sin embargo, la inclusión puede ser archivos descargados desde la página oficial o desde CDN

Usando CDN

Sería una opción para que vuestro servidor no tenga muchas peticiones y pueda ayudarte cuando tengas un tráfico considerable.

<link rel="stylesheet" href="//cdn.datatables.net/1.11.3/css/jquery.dataTables.min.css">
<script src="https://code.jquery.com/jquery-3.5.1.js"></script>
<script src="//cdn.datatables.net/1.11.3/js/jquery.dataTables.min.js"></script>

Librerías descargadas

Si tienes un buen servidor web (VPS o Dedicado) puedes optar por otras alternativas. Como ser descargar los componentes del DataTables.

Además, de no interesarte usar las opciones CDN para tu sitio, puedes descargar o usar los archivos del complemento que más te interese. Donwload.

<link rel="stylesheet" href="/css/jquery.dataTables.min.css">
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.dataTables.min.js"></script>

Aquí más bien tienes que observar las rutas donde se encuentran los archivos.

Segundo: Inicializar la DataTables

Para inicializar la tabla dinámica, debemos de colocar el siguiente código JavaScript (entre los <head> o al empezar el <body> y/o antes de cierre de la etiqueta </body>)

a) Poblar con información estática

Si, nuestra tabla nuestros datos estáticos es decir datos que no cambiaran el siguiente script es idóneo para el ejemplo.

<script>
$(document).ready( function () {
$('#myTable').DataTable();
} );
</script>

b) Poblar tabla con base de datos.

Por el contrario, si deseamos que la tabla sea dinámica y que muestre información de MySQL por ejemplo debemos de declarar de la siguiente manera.

$(document).ready(function() {
    $('#myTable').DataTable( {
        "processing": true,
        "serverSide": true,
        "ajax": "../server_side/scripts/server_processing.php"
    } );
} );

Es recomendable la opción serverSide por trabaja con grandes volúmenes de información sin problemas.

Tercero: Declarar la tabla

En el segundo paso hemos inicializado la DataTables y el ID se llama «myTable» que debemos de agregar esa ID obligatoriamente a una tabla HTML5 donde queremos que se muestre la información ya sea registros estáticos o dinámicos con conexión a MySQL.

<table id="myTable" class="display" cellspacing="0" width="100%">
<thead>
<tr>
<th>Nombre</th>
<th>Posición</th>
<th>Fecha de inicio</th>
<th>Salario</th>
</tr>
</thead>
<tfoot>
<tr>
<th>Nombre</th>
<th>Posición</th>
<th>Fecha de inicio</th>
<th>Salario</th>
</tr>
</tfoot>

<tbody>
<tr>
<td>Tiger Nixon</td>
<td>System Architect</td>
<td>2011/04/25</td>
<td>$320,800</td>
</tr>
<tr>
<td>Garrett Winters</td>
<td>Accountant</td>
<td>2011/07/25</td>
<td>$170,750</td>
</tr>
<tr>
<td>Ashton Cox</td>
<td>Junior Technical Author</td>
<td>2009/01/12</td>
<td>$86,000</td>
</tr>
<tr>
<td>Cedric Kelly</td>
<td>Senior Javascript Developer</td>
<td>2012/03/29</td>
<td>$433,060</td>
</tr>
<tr>
<td>Airi Satou</td>
<td>Accountant</td>
<td>2008/11/28</td>
<td>$162,700</td>
</tr>
<tr>
<td>Brielle Williamson</td>
<td>Integration Specialist</td>
<td>2012/12/02</td>
<td>$372,000</td>
</tr>
<tr>
<td>Herrod Chandler</td>
<td>Sales Assistant</td>
<td>2012/08/06</td>
<td>$137,500</td>
</tr>
<tr>
<td>Rhona Davidson</td>
<td>Integration Specialist</td>
<td>2010/10/14</td>
<td>$327,900</td>
</tr>
<tr>
<td>Colleen Hurst</td>
<td>Javascript Developer</td>
<td>2009/09/15</td>
<td>$205,500</td>
</tr>
<tr>
<td>Sonya Frost</td>
<td>Software Engineer</td>
<td>2008/12/13</td>
<td>$103,600</td>
</tr>
<tr>
<td>Jena Gaines</td>
<td>Office Manager</td>
<td>2008/12/19</td>
<td>$90,560</td>
</tr>
<tr>
<td>Lael Greer</td>
<td>Systems Administrator</td>
<td>2009/02/27</td>
<td>$103,500</td>
</tr>
<tr>
<td>Jonas Alexander</td>
<td>Developer</td>
<td>2010/07/14</td>
<td>$86,500</td>
</tr>
</tbody>
</table>

DataTables con ServerSide

Si usamos esta característica nuestra información será visible, mas rápida y eficiente. Vamos a implementar el procesamiento del lado del servidor usando jQuery + ajax + PHP + MySQL + Bootstrap.

Pasos para implementar DataTables serverSide

  • Primero paso: Crear una base de datos y una tabla
  • Segundo paso: incluir bibliotecas de DataTables
  • Tercer paso – Página HTML para Datatables
  • Cuarto paso: Iniciar el Datatable
  • Quinto paso: Obtener registros Mysql DB usando Ajax

Estructura de la implementacion serverSide

Paso 1: Crear una base de datos y una tabla

En primer lugar, abra su PHPMyAdmin y ejecute la siguiente consulta MySQL para crear una base de datos y una tabla; Como se muestra abajo:

CREATE TABLE `usuarios` (
  `id` int(11) NOT NULL,
  `nombre` varchar(25) COLLATE utf8_unicode_ci NOT NULL,
  `apellidos` varchar(25) COLLATE utf8_unicode_ci NOT NULL,
  `email` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `genero` enum('Hombre','Mujer') COLLATE utf8_unicode_ci NOT NULL,
  `pais` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
  `creado` datetime NOT NULL,
  `estado` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1=Activo | 0=Inactivo'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

-- Volcado de datos para la tabla `usuarios`

INSERT INTO `usuarios` (`id`, `nombre`, `apellidos`, `email`, `genero`, `pais`, `creado`, `estado`) VALUES
(1, 'Lucia', 'Figueroa', 'lucia@miweb.com', 'Mujer', 'Argentina', '2021-12-04 13:28:05', 1),
(2, 'Carlos', 'Mogollon', 'carlos@miweb.com', 'Hombre', 'Argentina', '2021-12-04 17:33:33', 1),
(3, 'Melina', 'Carbajal', 'melina@miweb.com', 'Mujer', 'Ecuador', '2021-12-04 17:33:33', 1),
(4, 'Karina', 'Villaran', 'karina@miweb.com', 'Mujer', 'Chile', '2021-12-04 17:34:46', 1),
(5, 'Julian', 'Lee', 'julian@miweb.com', 'Hombre', 'Ecuador', '2021-12-04 17:34:46', 1),
(6, 'Miguel', 'Cotrado', 'miguel@miweb.com', 'Hombre', 'Bolivia', '2021-12-04 17:34:46', 1),
(7, 'Sujey', 'Cardenas', 'sujey@miweb.com', 'Mujer', 'Uruguay', '2021-12-04 17:34:46', 1),
(8, 'Hector', 'Santander', 'hector@miweb.com', 'Hombre', 'Colombia', '2021-12-04 17:34:46', 1),
(9, 'Valeria', 'Chumpitaz', 'valeria@miweb.com', 'Mujer', 'Chile', '2021-12-04 17:34:46', 1);

ALTER TABLE `usuarios`
  ADD PRIMARY KEY (`id`);

ALTER TABLE `usuarios`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10;

Segundo paso: incluir bibliotecas de DataTables

Incluya las bibliotecas jQuery dataTable js y las bibliotecas bootstrap en su archivo index.php; Como se muestra abajo. Recordemos, que estas implementaciones son imprescindibles para que funcione correctamente.

<!-- DataTables CSS library -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.2/css/bootstrap.css"/>
<link rel="stylesheet" href="https://cdn.datatables.net/1.11.3/css/dataTables.bootstrap4.min.css"/>

<link rel="stylesheet" href="//stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">

<script src="//code.jquery.com/jquery-3.5.1.js"></script>
<!-- DataTables JS library -->
<script type="text/javascript" src="//cdn.datatables.net/1.11.3/js/jquery.dataTables.min.js"></script>
<!-- DataTables JBootstrap -->
<script type="text/javascript" src="//cdn.datatables.net/1.11.3/js/dataTables.bootstrap4.min.js"></script>

Tercer paso – Página HTML para Datatables

Cree el archivo index.php, que se usa para mostrar datos de la base de datos MySQL usando datatable js; así que agregue el siguiente código en su archivo index.php; Como se muestra abajo:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>DataTables Server-side procesado con PHP y MYSQL</title>
<!-- DataTables CSS library -->

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.2/css/bootstrap.css"/>
<link rel="stylesheet" href="https://cdn.datatables.net/1.11.3/css/dataTables.bootstrap4.min.css"/>

<link rel="stylesheet" href="//stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<script src="//code.jquery.com/jquery-3.5.1.js"></script>
<!-- DataTables JS library -->
<script type="text/javascript" src="//cdn.datatables.net/1.11.3/js/jquery.dataTables.min.js"></script>
<!-- DataTables JBootstrap -->
<script type="text/javascript" src="//cdn.datatables.net/1.11.3/js/dataTables.bootstrap4.min.js"></script>
<style type="text/css">
.bs-example{
margin: 20px;
}
</style>
</head>
<body>
<div class="bs-example">
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="page-header clearfix">
<h2 class="pull-left">Lista de Usuarios</h2>
</div>
<table id="listaUsuarios" class="table table-sm table-striped table-bordered" style="width:100%">
<thead>
<tr>
<th>Nombre</th>
<th>Apellidos</th>
<th>Email</th>
<th>Genero</th>
<th>Pais</th>
<th>Creado</th>
<th>Estado</th>
</tr>
</thead>
<tfoot>
<tr>
<th>Nombre</th>
<th>Apellidos</th>
<th>Email</th>
<th>Genero</th>
<th>Pais</th>
<th>Creado</th>
<th>Estado</th>
</tr>
</tfoot>
</table>
</div>
</div> 
</div>
</div>
</body>
<script>
$(document).ready(function(){
$('#listaUsuarios').DataTable({
"processing": true,
"serverSide": true,
"ajax": "extraer.php"
});
});
</script>
</html>

Cuarto paso: Iniciar el Datatables

Es importante generar estas líneas de código para que se inicie nuestra tabla dinámica al cargar el documento HTML. Sin embargo, para dinamizar proceso puede estar también en un fichero .js de javascript.

Si observamos, ("ajax": "fetch.php") está llamando a un fichero PHP que será el encargado de conectar con MySQL y devolver los registros vía json_encode().

<script>
$(document).ready(function(){
$('#listaUsuarios').DataTable({
"processing": true,
"serverSide": true,
"ajax": "extraer.php"
});
});
</script>

Quinto paso: Obtener registros Mysql DB usando Ajax

Cree el archivo extraer.php, su rol será de conectarse con la base de datos MySQL y que se usara para realizar búsquedas en los datos de datos mysql usando Ajax y mostrarlos en su archivo index.php haciendo uso del plugín DataTables.

<?php 
// Database connection info 
$dbDetails = array( 
'host' => 'localhost', 
'user' => 'root', 
'pass' => 'root', 
'db' => 'e_serverside'
); 
// mysql db table to use 
$table = 'usuarios'; 
// Table's primary key 
$primaryKey = 'id'; 
// Array of database columns which should be read and sent back to DataTables. 
// The `db` parameter represents the column name in the database. 
// The `dt` parameter represents the DataTables column identifier. 
$columns = array( 
array( 'db' => 'nombre', 'dt' => 0 ), 
array( 'db' => 'apellidos', 'dt' => 1 ), 
array( 'db' => 'email', 'dt' => 2 ), 
array( 'db' => 'genero', 'dt' => 3 ), 
array( 'db' => 'pais', 'dt' => 4 ), 
array( 
'db' => 'creado', 
'dt' => 5, 
'formatter' => function( $d, $row ) { 
return date( 'jS M Y', strtotime($d)); 
} 
), 
array( 
'db' => 'estado', 
'dt' => 6, 
'formatter' => function( $d, $row ) { 
return ($d == 1)?'Activo':'Inactivo'; 
} 
) 
); 
// Include SQL query processing class 
require 'ssp.class.php'; 
// Output data as json format 
echo json_encode( 
SSP::simple($_GET, $dbDetails, $table, $primaryKey, $columns)
);

Tenga en cuenta que: – La clase SSP maneja las operaciones relacionadas con la base de datos. Contiene algunas funciones auxiliares para crear consultas SQL para el procesamiento del lado del servidor de DataTables.

DataTables Serverside completo
DataTables Serverside completo

Conclusión

A través de este tutorial, hemos aprendido cómo implementar el procesamiento del lado del servidor con DataTables usando jQuery + ajax + PHP + MySQL + el framework Bootstrap.

Toda la documentación de este plugin está bien redactada en la página oficial. Ver documentación.

Usando DataTables con serverSide lograremos lo siguiente:

  • Optimizar las peticiones MySQL,
  • Ahorro de tiempo en programación
  • Varias modalidades para peticiones de información
  • Increíbles características de la librería en proyectos web

Recordemos que, la característica de Serverside y nos puede ayudar a mostrar grandes cantidades de información sin ningún problema.

Un programador web debe optimizar su tiempo y esfuerzo, así como ofrecer a sus clientes las mejores soluciones en desarrollo. Si te gusto el artículo puedes apoyarme compartiendo este post en las redes sociales.

Descargar

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

4 comentarios

  1. Si yo tengo un archivo HTML y otro archivo PHP para mostrar los registros
    En cuál de estos archivos se colocan las librerías??

  2. Muy buen aporte, justo lo que necesitaba, pero ¿como hago si quisiera generar una consulta SQL con condiciones? Por ejemplo que la consulta solo muestre los usuarios que están activos.

  3. Me gusto tu articulo pero es muy bueno para aquellos desarrolladores que usan php pero para los que usamos python seria bueno un articulo que use python y un poco de django seria una buena version de tu articulo ya que ese articulo esta explicado en la pagina oficial de DataTable

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba