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();
?>
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>
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;
}
?>