Saltar al contenido

Datatables + PHP: procesamiento del lado del servidor en varias tablas

Te recomendamos que pruebes esta respuesta en un entorno controlado antes de enviarlo a producción, saludos.

Solución:

SOLUCIÓN

Clase ssp.class.php no admite uniones y subconsultas, pero hay una solución. El truco es usar una subconsulta como se muestra a continuación en $table definición. Reemplazar table con su nombre de tabla real en la subconsulta.

$table = << 'id',          'dt' => 0 ),
   array( 'db' => 'name',        'dt' => 1 ),
   array( 'db' => 'father_id',   'dt' => 2 ),
   array( 'db' => 'father_name', 'dt' => 3 )
);

$sql_details = array(
   'user' => '',
   'pass' => '',
   'db'   => '',
   'host' => ''
);

require( 'ssp.class.php' );
echo json_encode(
   SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns )
);

También necesitas editar ssp.class.php y reemplazar todas las instancias de FROM `$table` con FROM $table para eliminar los acentos graves.

Asegúrese de que todos los nombres de columna sean únicos; de lo contrario, use AS para asignar un alias.

NOTAS

También hay un repositorio github.com/emran/ssp que contiene ssp.class.php apoyando JOIN.

ENLACES

Consulte jQuery DataTables: uso de WHERE, JOIN y GROUP BY con ssp.class.php para obtener más información.

TL;RD: Terminé usando una modificación de los Datatables originales. ssp.class.php llamó ssp.php implementado por Emran Ul Hadi: https://github.com/emran/ssp

Su modificación acepta JOIN, WHERE, GROUP BY y alias de columna. Aunque el archivo no se ha actualizado en más de un año, aún funciona con DataTables 1.12.x. Hice algunas modificaciones a su versión que aumentan su robustez y mejoran la documentación con ejemplos más claros.

Publicaré mis modificaciones/actualizaciones aquí cuando tenga un poco más de tiempo. Eventualmente, espero enviar una solicitud de extracción para obtener mis actualizaciones en su repositorio.

Parece que los scripts de DataTables no están diseñados para su caso de uso particular. Pero hay un método que permite personalizar las cláusulas where y al leer la fuente de ssp.class.php#complex, creo que esta configuración debería funcionar para usted usando el WHERE método. los JOIN El método no funcionará aquí.

Para resumir: edite su server_processing.php a eso:

 'tbl_houses.style'],
    [ 'db' => 'bl_houses.roomCount'],
    [ 'db' => 'tbl_residents.firstName'],
    [ 'db' => 'tbl_residents.lastName']

);

// connection details
$sql_details = [

];

$whereAll = 'tbl_houses.houseID = tbl_residents.residentID';

require( 'ssp.class.php' );

echo json_encode(
    SSP::complex( $_GET, $sql_details, $table, $primaryKey, $columns , null, $whereAll);
);

los complex método acepta su costumbre WHERE cláusula. Pero lo complicado es el uso de 2 tablas. Esto es para lo que el guión no parece estar diseñado. Eché un vistazo a cómo está construyendo la consulta SQL final y parece que puede usar esto table_name.field_name notación en la configuración, así como la table_name, table_name notación para el $table y $primaryKey variables

Como se mencionó, el script DataTables no pretende el uso de 2 tablas. No sé si todas las funciones de DataTables funcionarán con eso.

Si te ha sido de utilidad nuestro post, sería de mucha ayuda si lo compartes con el resto juniors de esta manera contrubuyes a extender nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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