Ejemplo funcional de TDatatable + TMySQL

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:

Ejemplo funcional de TDatatable + TMySQL

Mensaje por administrador »

Ejemplo de las clases TDatabse + TMySQL trabajando juntas.

A continuacion publico el codigo del ejemplo completo para usar la clase TDataTable en la parte Vista (frontEnd)
y la clase TMySQL en la parte Modelo (BackEnd) y las funciones de la parte Controlador (funciones JavaScript)

Codigo Vista :

Código: Seleccionar todo

<?php
include( "config.php" );
include( "config_db.php" );
include( TWEB_PATH . 'core.php' );
include( TWEB_PATH . 'core.modal.php' );

$oWeb = new TWeb('TEST TDATATABLE + TMYSQL');
$oWeb->lAwesome = true; 
$oWeb->SetIcon( IMAGE_PATH . 'tweb.png' );
$oWeb->Activate();

  $oWnd = new TWindow('main', 10, 10, '90%', '85%');

    $oBar = new TBar( $oWnd );
    $oBar->AddButton( 'bAdd', 'Nuevo', 'AddRow()' , IMAGE_PATH . 'plus-black-16.png', 'Nuevo' );
    $oBar->AddButton( 'bExit', 'Salir', 'DoForo()' , IMAGE_PATH . 'logout-black-16.png', 'Salir' );

    $cIcon  = '<span style="margin-left: 30px;" onclick="DelRow()">';
    $cIcon .= '<i class="fa fa-trash fa-2x" aria-hidden="true"></i>';
    $cIcon .= '</span>';

    $cButton = '<button type="button" onclick="EditRow()" class="btn btn-primary">Editar</button>';

    $oTable = new TDataTable( $oWnd, 'myTable' );
    $oCol = $oTable->AddCol( 'id',        'Id' );
    $oCol = $oTable->AddCol( 'codigo',    'Folio' );
    $oCol = $oTable->AddCol( 'producto',  'Nombre' );
    $oCol = $oTable->AddCol( 'precio',    'Precio', 'N$', AL_RIGHT );
    $oCol = $oTable->AddBtn( '', $cIcon );
    $oCol = $oTable->AddBtn( '', $cButton );
    $oTable->PageLength( 10 );
    $oTable->Paging( true );
    $oTable->ScrollY( "320px" );
    $oTable->ScrollX( true );

    $idModal = "myModal";

    $oModal = new TModal( $idModal, 'Registro de Productos' );
    $oModal->AddInput( 'Codigo',   'codi',  TYPE_TEXT,  LBL_RIGHT, 'codigo' );
    $oModal->AddInput( 'Producto', 'name',  TYPE_TEXT,  LBL_RIGHT, 'nombre' );
    $oModal->AddInput( 'Precio',   'price', TYPE_TEXT,  LBL_RIGHT, 'precio' );
    $oModal->AddButton( 'bsave', 'Grabar', 'DoSave()', BTN_INFO );
    $oModal->AddButton( 'bexit', 'Salir', '', BTN_EXIT );
    $oModal->AddKey( "codi",  VK_RETURN, null, "name" );
    $oModal->AddKey( "name",  VK_RETURN, null, "price" );
    $oModal->AddKey( "price", VK_RETURN, null, "codi" );
    $oModal->SetFocus( 'codi' );
    $oModal->Activate();

  $oWnd->AddVarJS( "idModal", '"#' . $idModal . '"' );  // Crea Variable Global idModal en JavaScript
  $oWnd->Activate();

$oWeb->End();

?>
Codigo Controlador :

Código: Seleccionar todo

<script>

  const _SUCCESS = "success";
  const _ERROR   = "error";

  var oGrid;

  $(function() {
    console.log("idModal", idModal);
    let param = {};
    param.action = "load";
    MsgServer( "./srv_tmysql.php", load_respond, param );
  });

  function load_respond( respond ) {
    if ( respond.result ) {
      let o = new TControl();
      oGrid = o.GetControl( 'myTable' );
      oGrid.SetData( respond.data );
      MsgNotify("registros leidos", _SUCCESS );
    }
  }

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

  function AddRow() {
    SetmodalTitle( idModal, "Agregar Nuevo Producto" );
    $(idModal).modal({ backdrop : false, keyboard : false, show : true });
  }

  function DoSave() {
    JMsgYesNo("Agrega el producto ?", doserver);
  }

  function doserver() {
    let param = {};
    param.action = "save";
    param.codigo = $("#codi").val();
    param.nombre = $("#name").val();
    param.precio = $("#price").val();
    MsgServer( "./srv_tmysql.php", add_respond, param );
  }

  function add_respond( respond ) {
    if ( respond.result ) {
      var datos = {};
      datos.codigo    = $("#codi").val();
      datos.producto  = $("#name").val();
      datos.precio    = $("#price").val();

      var o = new TControl();
      oGrid = o.GetControl( 'myTable' );
      oGrid.InsertRow( datos );
      MsgNotify("registro grabado", _SUCCESS );
      $(idModal).modal("hide");
    } else {
      MsgNotify("No se grabo el registro", _ERROR );
      $(idModal).modal("hide");
    }
  }

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

  function DelRow() {
    JMsgYesNo("Borra el codigo ?", deleteRow);
  }

  function deleteRow() {
    let param = {};
    param.action = "delete";
    param.id     = oGrid.GetColValue("id");
    MsgServer( "./srv_tmysql.php", del_respond, param );
  }

  function del_respond( respond ) {
    if (respond.result) {
      oGrid.DeleteRow();
      MsgNotify("registro borrado", _SUCCESS);
    }
  }

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

  function EditRow() {
    JMsgYesNo("Edita el registro ?", editRow);
  }

  function editRow() {
    SetmodalTitle( idModal, "Modificar Producto" );
    $(idModal).modal({ backdrop : false, keyboard : false, show : true });
    $("#codi").val( oGrid.GetColValue("codigo") );
    $("#name").val( oGrid.GetColValue("producto") );
    $("#price").val( oGrid.GetColValue("precio") );
    $("#name" ).focus();    
    $("#bsave").off('click').on('click', updateRow)
  }

  function updateRow() {
    let param = {};
    param.action = "update";
    param.id     = oGrid.GetColValue("id");
    param.codigo = $("#codi").val();
    param.nombre = $("#name").val();
    param.precio = $("#price").val();
    MsgServer( "./srv_tmysql.php", edit_respond, param );
  }

  function edit_respond( respond ) {
    if (respond.result) {
      oGrid.UpdateRow( respond.data );
      MsgNotify("registro modificado", _SUCCESS);
      $(idModal).modal("hide");
    } else {
      MsgNotify("No se modifico el registro", _ERROR );
      $(idModal).modal("hide");
    }
  }

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

  function DoForo() {
    location.href = 'http://avcsistemas.com/foro';
  }

</script>

<style>

@media (max-width: 375px) {
  #main {
    top: 20px !important;
    left: 18px  !important;
    width: 90%  !important;
    height: 80%  !important;
  }
}

</style>
Codigo Modelo (acceso a servidor parte BackEnd) :

Código: Seleccionar todo

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

  $action = filter_post( "action", "" );
  
  switch ($action) {

    case 'load':
      $aRet = LoadProducto( PRODUCTOS ) ;
      break;

    case 'save':
      $codigo = filter_post("codigo");
      $nombre = filter_post("nombre");
      $precio = filter_post("precio");
      $aRet = AddProducto( $codigo, $nombre, $precio, PRODUCTOS ) ;
      break;

    case 'update':
      $id     = filter_post("id");
      $codigo = filter_post("codigo");
      $nombre = filter_post("nombre");
      $precio = filter_post("precio");
      $aRet = UpdProducto( $id, $codigo, $nombre, $precio, PRODUCTOS ) ;
      break;  

    case 'delete':
      $id   = filter_post("id");
      $aRet = DelProducto( $id, PRODUCTOS ) ;
      break;  
    
    default:
      $aRet = [ "result" => false ];
      break;
  }

  die( json_encode( $aRet ) );  

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

function LoadProducto( $tabla ) {
  
  $sql = "SELECT codigo, nombre, precio, my_recno 
          FROM $tabla ORDER BY codigo"; 

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

  if ( $mysql->query($sql) ) {
    while ( $row = $mysql->getrow() ) {
      $aRow[] = [ 'id'       => $row['my_recno'],
                  'codigo'   => $row['codigo'], 
                  'producto' => $row['nombre'], 
                  'precio'   => $row['precio'] ];
    }                    
    $aRet = [ 'result' => true, 'data' => $aRow ]; 
  } else {
    $aRet = [ 'result' => false ];	  
  }  

  $mysql->close();

  return $aRet;	

}  

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

function AddProducto( $codigo, $nombre, $precio, $tabla ) {
  
  $sql = "INSERT INTO $tabla
          SET codigo = '$codigo',
              nombre = '$nombre',
              precio = $precio"; 

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

  if ( $mysql->execute($sql) ) {
    $aRet = [ 'result' => true ];
  } else {
    $aRet = [ 'result' => false ];	  
  }  

  $mysql->close();

  return $aRet;	

}

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

function DelProducto( $id, $tabla ) {
  
  $sql = "DELETE FROM $tabla WHERE my_recno = $id LIMIT 1"; 

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

  if ( $mysql->execute($sql) ) {
    $aRet = [ 'result' => true ];
  } else {
    $aRet = [ 'result' => false ];	  
  }  

  $mysql->close();

  return $aRet;	

}

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

function UpdProducto( $id, $codigo, $nombre, $precio, $tabla ) {
  
  $sql = "UPDATE $tabla
          SET codigo = '$codigo',
              nombre = '$nombre',
              precio = $precio
          WHERE my_recno = $id"; 

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

  if ( $mysql->execute($sql) ) {
    $data = [ 'id'       => $id, 
              'codigo'   => $codigo, 
              'producto' => $nombre, 
              'precio'   => $precio ];
    $aRet = [ 'result' => true, 'data' => $data ];
  } else {
    $aRet = [ 'result' => false ];	  
  }  

  $mysql->close();

  return $aRet;	

}

?>

Link del ejemplo funcionando :Test del ejemplo
Saludos.

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

Responder