TMySQL y TDatatable (con archivo JSON)

Esta es una libreria en PHP para desarrollo de aplicaciones WEB
Avatar de Usuario
administrador
Site Admin
Mensajes: 74
Registrado: Mar Nov 24, 2020 1:56 am
Contactar:

TMySQL y TDatatable (con archivo JSON)

Mensaje por administrador »

He mejorado la clase TDatatable para usar la clase TMySQL para crear y mostrar consultas grandes, por ejemplo
350.000 mil registros, se que es algo inusual mostrar en TDatatable una consulta con esa cantidad de registros, pero
es una de la maneras de probar el poder de las dos clases trabajando juntas.

A continuacion explico y pongo el codigo.
  • 1 Pasar al server la consulta con el nombre del archivo json a crear
    2 Crear el archivo json en el servidor donde se guardan los registros traidos de la consulta (QUERY) y pasar a Javascript el archivo
    3 Agregar los datos a la Datatable para mostrarlos
Codigo del 1er bloque

Código: Seleccionar todo

<script>

  function Load() {
    JMsgPrompt( "Numero de Registros", readrows, '', 'numero de registros' );
  }

  function readrows( rows ) {
    let param = {};
    param.rows = rows;
    param.file = './data/result_query.json'   <-- nombre del archivo JSON que se va crear
    MsgServer( 'srv_tweb.php', result_server, param );
  }
  
Codigo 2do bloque

Código: Seleccionar todo

<?php
include( 'config.php' );
include( 'config_db.php' );
include( TWEB_PATH . 'tmysql.php');

  $rows = filter_post( "rows", 0 );
  $file = filter_post( "file", './query.json' );
  
  $aRet = loadDatos( NOTAS, NOTAS_DETALLE, $rows, $file );
  die( json_encode( $aRet ) );  

//----------------------------------

function loadDatos( $notas, $notas_detalle, $rows, $filejson ) {
  
  $sql = "SELECT a.folio,
                 (SELECT b.nombre 
                  FROM $notas AS b
                  WHERE a.folio = b.folio
                  LIMIT 1) AS nombre,
                 a.codigo,
                 a.descripcion,
                 a.cantidad,
                 a.prec_unit,
                 a.importe
          FROM $notas_detalle AS a
          ORDER BY a.folio
          LIMIT $rows";

  $conex = new TMysql( DB_SERVER, DB_USER, DB_PSW, DB_DATABASE );  

  $aRet = [];
  $aRow = [];

  if ( $conex->query($sql) ) {

    while ( $row = $conex->getrow() ) {
      $aRow[] = [ 'folio'       => $row['folio'], 
                  'nombre'      => $row['nombre'], 
                  'codigo'      => $row['codigo'],
                  'descripcion' => $row['descripcion'],
                  'cantidad'    => $row['cantidad'], 
                  'precio'      => $row['prec_unit'], 
                  'importe'     => $row['importe'] ];
    }                    
  
    // Aqui creamos el archivo JSON con los datos que nos devuelve el servidor
    $fp = fopen($filejson, 'w');
    fwrite($fp, json_encode($aRow));
    fclose($fp);

    $aRet = [ 'result' => true, 'data' => $filejson ];

  } else {

    $aRet = [ 'result' => false ];	  

  }  

  $conex->close();

  return $aRet;	

}

?>
Codigo del 3er bloque

Código: Seleccionar todo

<script>
function result_server( respond ) {
    if (respond.result) {
      fileJson = respond.data;
      let oCtrl = new TControl();
      let oGrid = oCtrl.GetControl( 'myTable' );
      oGrid.setJsonfile( fileJson );
    } else {
      MsgNotify('No hay datos para mostrar', 'info', true);  
    }  
  }
Link del Test con archivos JSON: Test del Link

Link del Test con array-request JSON Test del Link
Saludos.

Albeiro Valencia
Imagen Bienvenidas las Donaciones Gracias https://www.paypal.me/valenciaim5

Responder