Breaking

Post Top Ad

Your Ad Spot

domingo, 10 de marzo de 2019

Procesamiento del lado del servidor de DataTables con CodeIgniter

DataTables es una potente biblioteca de jQuery que proporciona la manera más rápida de mostrar datos en formato tabular en la página web. Puede mostrar fácilmente los datos en una tabla HTML con las funciones de clasificación, filtrado y paginación utilizando el complemento Datatables. El procesamiento de datos del lado del servidor permite recuperar datos de la base de datos y se muestra en una vista tabular con la función de búsqueda y paginación.
En general, las tablas de datos trabajan con los datos del lado del cliente. Pero si su aplicación web maneja una gran cantidad de datos de la base de datos, debe considerar el uso de la opción de procesamiento del lado del servidor en Datatables. El procesamiento de datos del lado del servidor se puede manejar fácilmente con PHP y MySQL. También puede usar DataTables con el procesamiento del lado del servidor en el marco de CodeIgniter . En este tutorial, le mostraremos cómo habilitar el procesamiento del lado del servidor en DataTables con CodeIgniter en CodeIgniter 3.
En este ejemplo de CodeIgniter DataTbales, se implementará la siguiente funcionalidad.
  • Obtenga datos de la base de datos MySQL y enumere en formato tabular con el complemento jQuery Datatables.
  • Agregue funciones de paginación, búsqueda y filtro a la tabla HTML con Datatables.
Antes de comenzar, eche un vistazo a la estructura de archivos del procesamiento del lado del servidor de Datos de Datos de CodeIgniter .
codeigniter-datatables-library-files-structure-codexworld

Crear tabla de base de datos

Es necesario crear una tabla en la base de datos desde donde la biblioteca de DataTables buscará los datos del lado del servidor El siguiente SQL crea una memberstabla con algunos campos básicos en la base de datos MySQL.
CREATE  TABLE  `miembros` (
  ` id`  int ( 11 ) NOT  NULL AUTO_INCREMENT,
  `first_name`  varchar ( 25 ) COLLATE utf8_unicode_ci NOT  NULL ,
  ` last_name`  varchar ( 25 ) COLLATE utf8_unicode_ci NOT  NULL ,
  `email`  varchar ( 50 ) COLLATE utf8_unicodeci NOT  NULL ,
  `gender` enum ( 'Male' ,'Femenino' ) COLLATE utf8_unicode_ci NOT  NULL ,
  `country`  varchar ( 20 ) COLLATE utf8_unicode_ci NOT  NULL ,
  ` created` datetime NOT  NULL ,
  `status` tinyint ( 1 ) NOT  NULL  DEFAULT  '1'  COMMENT  '1 = Active | 0 = Inactivo ' ,LLAVE 
 PRIMARIA ( `id` )
) MOTOR = InnoDB  DEFAULT  CHARSET = utf8 COLLATE = utf8_unicode_ci;

Config

autoload.php
Especifique alguna biblioteca útil y ayudante para cargar de forma predeterminada.
$ autoload [ ' library ' ] = array ( 'database' ); 
$ autoload [ 'helper' ] = array ( 'url' );

Controlador (Members.php)

El controlador Miembros contiene 3 funciones, __construct()index(), y getLists().
  • __construct () : carga el modelo miembro.
  • index () - Cargar la vista de lista de miembros.
  • getLists () : esta función maneja el procesamiento del lado del servidor y es llamada por el método Ajax de DataTable.
    • Obtenga los registros de los miembros de la base de datos utilizando la getRows()función del modelo de miembro.
    • Los datos se filtran en función de los parámetros $ _POST publicados por los Datatables.
    • Preparar los datos para Datatables.
    • Procesamiento de salida en formato JSON.
<? php 
defined ( 'BASEPATH' ) O exit ( 'No se permite el acceso directo al script' ); 

los miembros de la  clase  extienden el  controlador_CIN { 
    
    función   __construct () { 
        parent :: __construct (); 
        
        // Cargar el modelo de miembro 
        $ this -> load -> model ( 'member' ); 
    } 
    
índice de     función  () { 
        // Cargar la vista de lista de miembros 
        $ this -> load -> view ( 'members / index' ); 
    }
    
    función  getLists () { 
        $ data  $ row  = array (); 
        
        // 
        Recupera los registros de los miembros $ memData  $ this -> member -> getRows ( $ _POST ); 
        
        $ i  $ _POST [ 'inicio' ]; 
        foreach ( $ memData  as  $ member ) { 
            $ i ++; 
            $ created  date 'jS M Y' strtotime ( $ member -> created )); 
            $ status  = ( $ miembro-> estado  ==  1 )? 'Activo' : 'Inactivo' ; 
            $ data [] = array ( $ i $ member -> first_name $ member -> last_name $ member -> email $ member -> gender $ member -> country $ created $ status ); 
        } 
        
        $ output  = array ( 
            "draw"  =>  $ _POST [ 'draw' ], 
            "recordsTotal" $ this -> member -> countAll (), 
            "recordsFiltered"  =>  $ this -> member -> countFiltered ( $ _POST ), 
            "data"  =>  $ data , 
        ); 
        
        // Salida a formato JSON 
        echo  json_encode ( $ salida ); 
    } 
    
}

Modelo (Member.php)

El modelo miembro maneja los trabajos relacionados con la base de datos.
  • __construct () : especifique el nombre de la tabla, el orden de los campos de la columna, los campos de la columna de búsqueda y el orden del conjunto de registros.
  • getRows () : recupera los datos de los miembros de la base de datos. Devuelve los registros filtrados según los parámetros especificados en el método POST.
  • countAll () : cuenta todos los registros de la tabla de miembros.
  • countFiltered () : cuenta los registros filtrados según los parámetros publicados.
  • _get_datatables_query () : esta es una función auxiliar del modelo de miembro. Realice las consultas SQL necesarias para un procesamiento del lado del servidor solicitado.
<? php if (!  defined ( 'BASEPATH' )) exit ( 'No se permite el acceso directo al script' ); 

class  Member  extiende  CI_Model { 
    
    function  __construct () { 
        // Establecer el nombre de la tabla 
        $ this -> table  'members' ; 
        // Establecer campos de columna ordenables 
        $ this -> column_order  = array ( null 'first_name' , 'last_name' , 'email' , 'género' , 'país' , 'creado''estado' ); 
        // Establecer campos de columna de búsqueda 
        $ this -> column_search  = array ( 'first_name' , 'last_name' , 'email' , 'gender' , 'country' , 'created' , 'status' ); 
        // Establecer el orden predeterminado 
        $ this -> order  = array ( 'first_name'  =>  'asc' );

    
    



    $ postData ) { 
        $ this -> _get_datatables_query ( $ postData ); 
        if ( $ postData [ 'length' ]! = - 1 ) { 
            $ this -> db -> limit ( $ postData [ 'length' ],  $ postData [ 'start' ]); 
        } 
        $ query  $ this -> db -> get (); 
        devuelve  $ consulta -> resultado (); 
    } 
    
    / * 
     * Contar todos los registros
     * / 
    public function  countAll () { 
        $ this -> db -> from ( $ this -> table ); 
        devuelve  $ this -> db -> count_all_results (); 
    } 
    
    / * 
     * Cuenta los registros según los parámetros del filtro 
     * @param $ _POST filtra los datos según los parámetros publicados 
     * / 
    public function  countFiltered ( $ postData ) { 
        $ this -> _get_datatables_query ( $ postData ); 
        $ consulta  $ esto-> db -> get (); 
        devuelve  $ consulta -> num_rows (); 
    } 
    
    / * 
     * Realice las consultas SQL necesarias para un procesamiento del lado del servidor solicitado 
     * @param $ _POST filtre los datos según los parámetros publicados 
     * / 
    private function  _get_datatables_query ( $ postData ) { 
         
        $ this -> db -> from ( $ this - > mesa ); 
 
        $ i  0 ; 
        // hacer un bucle en las columnas de búsqueda para cada  
        ( $ this -> column_search como  $ item ) { 
            // si se puede enviar POST para búsqueda 
            si ( $ postData [ 'search' ] [ 'value' ]) { 
                // first loop 
                if ( $ i === 0 ) { 
                    // open bracket 
                    $ this - > db -> group_start (); 
                    $ this -> db -> like ( $ item $ postData [ 'search' ] [ 'value' ]); 
                } else { 
                    $ this -> db -> or_like ( $ item $ postData [ 'search' ] [ 'value' ]); 
                } 
                
                // último bucle 
                if ( count ( $ this -> column_search ) -  ==  $ i ) { 
                    // close bracket 
                    $ this -> db -> group_end (); 
                } 
            } 
            $ i ++; 
        } 
         
        if (isset ( $ postData [ 'order' ])) { 
            $ this -> db -> order_by ( $ this -> column_order [$ postData [ 'order' ] [ '0' ] [ 'column' ]],  $ postData [ 'order' ] [ '0' ] [ 'dir' ]); 
        } else if (isset ( $ this -> order )) { 
            $ order  $ this -> order ; 
            $ this -> db -> order_by ( key ( $ order ),  $ order [ key ( $ order )]); 
        } 
    } 

}

Ver (miembros / index.php)

Esta vista enumera los datos del miembro en una tabla HTML con opciones de búsqueda, filtro y paginación utilizando DataTables con CodeIgniter .
Al principio, incluye los archivos de biblioteca jQuery y DataTables.
<! - Biblioteca CSS de DataTables -> 
< link  rel = "hoja de estilo"  type = "text / css"  href = " <? Php  echo  base_url ( ' asset / DataTables / datatables.min.css' );  ?> " / >

<! - jQuery library -> 
< script  src = " <? php  echo  base_url ( ' asset / js / jquery.min.js' );  ?> " ></ script >

<! - Biblioteca JS de DataTables -> 
< tipo de script  = "text / javascript" src = " <? Php  echo  base_url ( ' asset / DataTables / datatables.min.js' );  ?> " > </ script >
Use el método DataTable () para inicializar el complemento Datatables.
  • Especifique el ID de selector ( #memListTable) de la tabla HTML donde se adjuntarán las Tablas de datos.
  • Configure lo siguiente para habilitar el procesamiento del lado del servidor:
    • Establezca la opción de proceso en verdadero.
    • Establezca la opción serverSide en true.
    • Establezca la URL de origen de Ajax desde donde DataTables obtendrá los datos del lado del servidor.
< script > 
$ ( documento ) .ready ( función () {
    $ ( '#memListTable' ) .DataTable ({
         // Indicador de 
        procesamiento "procesando" : verdadero ,
         // Modo de procesamiento del lado del servidor de DataTables 
        "serverSide" : verdadero ,
         // Inicial sin orden. 
        "orden" : [],
         // Cargar datos de una fuente Ajax 
        "ajax" : {
             "url" : " <? Php  echo  base_url ( 'members / getLists /' );  ?> " ,
             "Type" : "POST"
        }
        // Establecer propiedades de inicialización de definición de columna 
        "columnDefs" : [{ 
             "objetivos" : [ 0 ],
             "ordenable" : falso
        }]
    });
});
</ script >
Ahora, defina el elemento de la tabla HTML donde las tablas de datos listarán los datos del lado del servidor.
< table  id = "memListTable"  class = "display"  style = "width: 100%" > 
    < thead > 
        < tr > 
            < th > # </ th > 
            < th > Nombre </ th > 
            < th > Apellido < / th > 
            < th > Correo electrónico </ th > 
            < th > Género </ th > 
            <th > País </ th > 
            < th > Creado </ th > 
            < th > Estado </ th > 
        </ tr > 
    </ thead > 
    < tfoot > 
        < tr > 
            < th > </ th > 
            < th > Nombre < / th > 
            < th > Apellido </ th > 
            <th > Email</ th > 
            < th > Género </ th > 
            < th > País </ th > 
            < th > Creado </ th > 
            < th > Estado </ th > 
        </ tr > 
    </ tfoot > 
</ table >

Conclusión

Nuestro script de ejemplo le ayuda a integrar DataTables con el procesamiento del lado del servidor en CodeIgniter. Puede agregar fácilmente una tabla de datos HTML con todas las funciones con búsqueda y paginación en la aplicación CodeIgniter. Aquí hemos mostrado algunas características de uso común (Lista, búsqueda, filtro, clasificación y paginación) de los Datos de Datos con CodeIgniterPuede mejorar fácilmente la funcionalidad de las tablas de datos HTML con el procesamiento del lado del servidor de DataTables .

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

Post Top Ad

Your Ad Spot

Páginas