the files i upload inject some data to my DB, and the grid is a log of the issues that my occour while injectin the data.
i hae seen ther is a property called uploadedFiles
as it explains:
Get the information of uploaded files. After having done with upload files at client-side, the page is submitted back. The information of all uloaded files will be posted back as well. When KoolUploader object initiates, Those information will be extracted and saved into uploadedFiles property.
the thing is that cant find when is my page posted back so i can reload refesh submit my grid to retrieve the data from the log...
this is my main fileoploader page:
Spoiler content
<?php
$docTitle = "Herramienta de Importación desde Excel";
session_start();
//archivo con configuraciones basicas para el sistema.
require "cfg.php";
require "myFramework.php";
/**
*
* @requiere nescesarios para el funcionamiento de koolPHP
*
*/
//require $KoolControlsFolder."/KoolGrid/koolgrid.php";
//require $KoolControlsFolder."/KoolComboBox/koolcombobox.php";
//require $KoolControlsFolder."/KoolForm/koolform.php";
//require $KoolControlsFolder."/KoolCalendar/koolcalendar.php";
require $KoolControlsFolder."/KoolUploader/kooluploader.php";
require $KoolControlsFolder."/KoolAjax/koolajax.php";
$koolajax->scriptFolder = $KoolControlsFolder."/KoolAjax";
//require("emsiCurrencyColumn.php");
//require("emsiTextColumn.php");
//require("emsiCantidadColumn.php");
//require("emsiExpandDetailColumn.php");
//alert("loading page");
//logImpXlsxClear();
$kul = new KoolUploader("kul");
$kul->scriptFolder = $KoolControlsFolder."/KoolUploader";
$kul->handlePage = "importarxlsx.php";
$kul->styleFolder=$KoolControlsFolder."/KoolUploader/styles/black";
$kul->allowedExtension = "xlsx";
$kul->height = $commonGridHeight-8;
$kul->texts["BUTTON_ADD"]="Agregar";
$kul->texts["BUTTON_UPLOAD_ALL"]="Cargar Todo";
$kul->texts["BUTTON_CLEAR_ALL"]="Descartar Toto";
$kul->texts["BUTTON_UPLOAD"]="Cargar";
$kul->texts["BUTTON_REMOVE"]="Descartar";
$kul->texts["BUTTON_CANCEL"]="Cancelar";
$kul->texts["MESSAGE_UPLOAD_SUCCESSFUL"]="Cargado!";
$kul->texts["MESSAGE_FILE_NOT_ALLOWED"]="El formato no es correcto!!!";
$kul->texts["MESSAGE_FILE_BIGGER_THAN_PHP_ALLOW"]="Exede el tamaño maximo de archivos permitidos por PHP";
$kul->texts["MESSAGE_FILE_BIGGER_THAN_FORM_ALLOW"]="Exede el tamaño maximo de archivos permitidos por el sistema";
$kul->texts["MESSAGE_ONLY_PART_OF_FILE_UPLOADED"]="Solo se cargo parte del archivo";
$kul->texts["MESSAGE_UPLOAD_FAILED"]="Fallo la carga!!!";
$kul->texts["MESSAGE_UPLOAD_CANCEL"]="Carga cancelada!!!";
//$kul->maxFileSize = 512*1024; //500KB
$kul->progressTracking = true;
/**
*
* @creando el form manager
*
*/
$myform_manager = new KoolForm("myform");//el parametro es el nombre del objeto html que se quiere decorar
$myform_manager->scriptFolder = $KoolControlsFolder."/KoolForm";
$myform_manager->DecorationEnabled = true;
$myform_manager->styleFolder = $koolStyle;//$koolStyle;
/**
*
* @boton de exportar a excel
*
*/
$btnExpExcel = new KoolButton("btnExpExcel");
$btnExpExcel->Text = "";
$btnExpExcel->OnClick="alerta";
$btnExpExcel->AutoPostback=true;
$btnExpExcel->LeftImage = $ico_ExpExcel;
$btnExpExcel->ToolTip = $ToolTip_ExpExcel;
//$btnExpExcel->ButtonCss = "cssExpExcel";
$myform_manager->AddControl($btnExpExcel);//incluir el boton en el formulario para que sea decorado.
$myform_manager->Init();//inicializar el form
/**
*
* @preparando el data source
*
*/
$ds = new MySQLDataSource($db_con);
$ds->SelectCommand = "select * from tbl_logimpxlsx";
/**
*
* Grid de log importar xlsx
*
*/
$grid = new emsiKoolGrid("grid");//nueva tabla
$grid->DataSource = $ds;//asignacion del datasource
//$grid->table = "qry_estimaciones";
//$grid->dsumFilter = $currentFilter;
/**
*
* columna id.
*
*/
$column = new emsiTextColumn();
$column->DataField = "id";
$column->HeaderText = "ID";
$column->Width = "100px";
$column->rows= 1;
$grid->MasterTable->AddColumn($column);
/**
*
* columna de Descripcion.
*
*/
$column = new emsiTextColumn();
$column->DataField = "descripcion";
$column->HeaderText = "Descripcion";
$column->Width = "400px";
$grid->MasterTable->AddColumn($column);
/**
*
* columna de xlsrow.
*
*/
$column = new emsiTextColumn();
$column->DataField = "xlsrow";
$column->HeaderText = "Fila";
$column->Width = "100px";
$column->Align = "right";
$column->rows=1;
$grid->MasterTable->AddColumn($column);
/**
*
* columna de hoja.
*
*/
$column = new emsiTextColumn();
$column->DataField = "sheet";
$column->HeaderText = "Hoja";
$grid->MasterTable->AddColumn($column);
/**
*
* otros parametos para el grid.
*
*/
/**
*
* tratamiento para admins,users,viwers
*
*/
switch($_SESSION["id_tp_profile"]){
case 1:
case 2:
break;
}
$grid->scriptFolder = $KoolControlsFolder."/KoolGrid";//folder de scripts
$grid->AllowScrolling = true;
$grid->MasterTable->Height = $commonGridHeight;
$grid->MasterTable->Width = $commonGridWidth-312;
$grid->AjaxEnabled = true;//habilita koolAjax
$grid->RowAlternative = true;//habilita color alterno en registros
$grid->MasterTable->AllowHovering = true;//habilita iluminacion cuando el raton esta sobre un registro
$grid->AutoGenerateColumns = false;//impedir que autogenere las columans
//$grid->MasterTable->Pager = new GridPrevNextAndNumericPager();//modo de paginacion
$grid->ColumnWrap = true;//havilita el wrap en todas las columnas
$grid->AllowSorting = true;//habilita el ordenar
$grid->MasterTable->InsertSettings->Mode = "Form";//insertar registros atraves de formulario
$grid->MasterTable->InsertSettings->ColumnNumber = 2;//numero de columnas en el formulario de insercion
$grid->AllowFiltering = true;//habilita filtros
$grid->styleFolder=$koolStyle;//estilo predetminado en cfg.php
$grid->MasterTable->EditSettings->Mode = "Inline";//habilita edicion en linea;
$grid->MasterTable->FrozenColumnsCount = 2;
$grid->ShowFooter = true;
$grid->Localization->Load($KoolControlsFolder."/KoolGrid/localization/es.xml");
$grid->CharSet = "UTF-8";
$grid->Process();//procesar el grid
/**
*
* exportar a exel
*
*/
if(isset($_POST["btnExpExcel"]))
{
ob_end_clean();
$grid->GetInstanceMasterTable()->ExportToExcel();
}
?><!--fin php tag-->
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title><?php echo($docTitle); ?></title>
</head>
<body style="margin:0">
<?php echo $koolajax->Render();?>
<script>
</script>
<div align="center">
<div align="center" class="header">
<?php echo($docTitle); ?>
</div>
<table border='0' style='padding: 0;margin:0; border-spacing:0' cellspacing="0" cellpadding="0">
<tr>
<td>
<?php echo $kul->Render();?>
</td>
<td>
<?php echo $grid->Render();?>
</td>
</tr>
</table>
<div align="right" class="box">
<form id="myform" method="post" class="decoration" style="margin: 0;">
<?php echo $btnExpExcel->Render(); ?>
</form>
</div>
</div>
<?php echo $myform_manager->Render();?>
</body>
</html>
this is my handler page:
Spoiler content
<?php
session_start();
//archivo con configuraciones basicas para el sistema.
require "cfg.php";
require "myFramework.php";
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
// always modified
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
// HTTP/1.0
header("Pragma: no-cache");
//$KoolControlsFolder = "../../../../KoolControls";
require $KoolControlsFolder."/KoolUploader/kooluploader.php";
//Create handle object and edit upload settings.
$kulhandle = new KoolUploadHandler();
$kulhandle->targetFolder = "uploads";
$kulhandle->allowedExtension = "xlsx";
//Call the handle function to handle the request from client
$res= $kulhandle->handleUpload();
echo $res;
/*
* PHP Excel - Read a simple 2007 XLSX Excel file
*/
/** Set default timezone (will throw a notice otherwise) */
date_default_timezone_set('America/Mexico_City');
// $time = date('Y-m-d H:i:s', time());
include $KoolControlsFolder . '/library/phpexcel/classes/phpexcel/IOFactory.php';
if(isset($_FILES["KUL_FILE"])){
$file = $_FILES["KUL_FILE"];
$file = $file["name"];
$file = $file[0];
}else{
$file = "plantillas.xlsx";
}
$inputFileName = 'uploads/'.$file;
// Read your Excel workbook
try {
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($inputFileName);
} catch (Exception $e) {
die('Error loading file "' . pathinfo($inputFileName, PATHINFO_BASENAME) . '": ' . $e->getMessage());
}
alert("termino la carga del archivo");
logImpXlsxClear();
// Get worksheet dimensions
$sheetsInWB = $objPHPExcel->getSheetCount();
for($WBCurrentSheet=0;$WBCurrentSheet<$sheetsInWB;$WBCurrentSheet++){
$sheet = $objPHPExcel->getSheet($WBCurrentSheet);
$toTable=$sheet->getCell('A3')->getValue();
$seImportara = strtoupper($sheet->getCell('B2')->getValue());
if($seImportara=="S"){
switch ($toTable){
case "tbl_proyectos":
importar_proyectos($sheet);
break;
case "tbl_contratos":
importar_contratos($sheet);
break;
case "tbl_partidas":
importar_partidas($sheet);
break;
case "tbl_conceptos":
importar_conceptos($sheet);
break;
case "tbl_convenios":
importar_convenios($sheet);
break;
}
}
//$highestRow = $sheet->getHighestRow();
//$highestColumn = $sheet->getHighestColumn();
// Loop through each row of the worksheet in turn
//for ($row = 1; $row <= $highestRow; $row++) {
// Read a row of data into an array
// $rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE);
// foreach($rowData[0] as $k=>$v)
// echo "Row: ".$row."- Col: ".($k+1)." = ".$v."<br />";
//}
}
// $stm= "insert into tbl_userlog (id_user,doc_name,action,comment,time) values (".$id_user.",'".$doc_name."','".$action."','".$coment."','". $time ."');";
// $res=mysql_query($stm);
function proyectoExiste($clave){
$stm = "select * from tbl_proyectos where clave = '" . $clave . "'";
$result = mysql_query($stm);
$total = mysql_num_rows($result);
if($total>0){
$row = mysql_fetch_assoc($result);
return $row["id"];
}
return false;
}
function contratoExiste($idProyecto,$claveContrato){
$stm = "select * from tbl_contratos where clave = '" . $claveContrato . "' and id_proyecto = " . $idProyecto;
$result = mysql_query($stm);
$total = mysql_num_rows($result);
if($total>0){
$row = mysql_fetch_assoc($result);
return $row["id"];
}
return false;
}
function partidaExiste($idContrato,$clavePartida){
if($clavePartida=="0"){
return true;
}
$stm = "select * from tbl_partidas where clave = '" . $clavePartida . "' and id_contrato = " . $idContrato;
$result = mysql_query($stm);
$total = mysql_num_rows($result);
if($total>0){
$row = mysql_fetch_assoc($result);
return $row["id"];
}
return false;
}
function conceptoExiste($idPartida,$claveConcepto){
$stm = "select * from tbl_conceptos where clave = '" . $claveConcepto . "' and id_partida = " . $idPartida;
$result = mysql_query($stm);
$total = mysql_num_rows($result);
if($total>0){
$row = mysql_fetch_assoc($result);
return $row["id"];
}
return false;
}
function convenioExiste($idContrato,$claveConvenio){
$stm = "select * from tbl_convenios where clave = '" . $claveConvenio . "' and id_contrato = " . $idContrato;
$result = mysql_query($stm);
$total = mysql_num_rows($result);
if($total>0){
$row = mysql_fetch_assoc($result);
return $row["id"];
}
return false;
}
function get_id_tp_concepto($tp){
$stm = "select * from tbl_tp_conceptos where descripcion = '" . $tp . "';";
$result = mysql_query($stm);
$total = mysql_num_rows($result);
if($total>0){
$row = mysql_fetch_assoc($result);
return $row["id"];
}
return false;
}
function get_id_tp_unidad($tp){
$stm = "select * from tbl_tp_unidades where clave = '" . $tp . "';";
$result = mysql_query($stm);
$total = mysql_num_rows($result);
if($total>0){
$row = mysql_fetch_assoc($result);
return $row["id"];
}
return false;
}
function importar_proyectos($sheet){
//log notificacion de que se estan importando Proyectos.
logImpXlsx("importando Proyectos...");
$highestRow = $sheet->getHighestRow();
//recorremos la lista de proyectos
for($currentRow=5;$currentRow<=$highestRow;$currentRow++){
//echo $currentRow;
$clave=$sheet->getCell('A'.$currentRow)->getValue();
$descripcion = $sheet->getCell('B'.$currentRow)->getValue();
//verificamos si el proyecto ya existe
if(proyectoExiste($clave)){
//log notificacion de que el proyecto ya existe
logImpXlsx("El Proyecto Clave:".$clave." Descripción:".$descripcion." ya Existe",$currentRow,"Proyectos");
}else{
//se inseta el proyecto en la tabla de proyectos.
$stm= "insert into tbl_proyectos (clave,descripcion) values ('".$clave."','".$descripcion."');";
$res=mysql_query($stm);
}
}
}
function importar_contratos($sheet){
//log notificacion de que se estan importando contratos
logImpXlsx("importando Contratos...");
$highestRow = $sheet->getHighestRow();
//recorremos la lista de contratos
for($currentRow=5;$currentRow<=$highestRow;$currentRow++){
$claveProyecto = $sheet->getCell('A'.$currentRow)->getValue();
$clave=$sheet->getCell('B'.$currentRow)->getValue();
$descripcion = $sheet->getCell('C'.$currentRow)->getValue();
$anticipo = $sheet->getCell('D'.$currentRow)->getValue();
//debemos obtener el id del proyecto al que va asociado el contrato
//$stm = "select * from tbl_proyectos where clave = '" . $claveProyecto . "'";
//$result = mysql_query($stm);
//$total = mysql_num_rows($result);
if(proyectoExiste($claveProyecto)){
//en caso de que el proyecto exista procedemos a determinar si el contrato ya esiste.
//$row = mysql_fetch_assoc($result);
//$id_proyecto=$row["id"];
$id_proyecto=proyectoExiste($claveProyecto);
if(contratoExiste($id_proyecto,$clave)){
//log notificacion de que el contrato ya existe en el proyecto.
logImpXlsx("El Contrato Clave:".$clave." Descripción:".$descripcion,$currentRow,"Contratos");
}else{
//se inserta el nuevo contrato en la tabla de contratos.
$stm= "insert into tbl_contratos (clave,descripcion,id_proyecto,isnew) values ('".$clave."','".$descripcion."',".$id_proyecto.",1);";
$res=mysql_query($stm);
//preparamos la amortizacion de anticipo, las amortiaciones default y retenciones default para el cntrato.
$_SESSION["factorAnticipo"] = $anticipo;
createAnticpoAndAmortizaciondeAnticipoDefault();
copyRetencionesDefaultToContrato();
copyAmortizacionesDefaultToContrato();
}
}else{
//log notificacion de que el proyecto no exite por tanto el contrato no se puede crear.
logImpXlsx("El Proyecto Clave:" . $claveProyecto . " no existe!!! debe crearlo antes de sus Contratos.",$currentRow,"Contratos");
}
}
}
function importar_partidas($sheet){
//log notificacion de que se estan importando partidas
logImpXlsx("importando Partidas...");
$highestRow = $sheet->getHighestRow();
//recorremos la lista de Partidas
for($currentRow=5;$currentRow<=$highestRow;$currentRow++){
$claveProyecto = $sheet->getCell('A'.$currentRow)->getValue();
$claveContrato = $sheet->getCell('B'.$currentRow)->getValue();
$clavePartidaPadre=$sheet->getCell('C'.$currentRow)->getValue();
$clavePartida=$sheet->getCell('D'.$currentRow)->getValue();
$descripcion = $sheet->getCell('E'.$currentRow)->getValue();
if(proyectoExiste($claveProyecto)){
//en caso de que el proyecto exista procedemos a determinar si el contrato ya esiste.
$id_proyecto=proyectoExiste($claveProyecto);
if(contratoExiste($id_proyecto,$claveContrato)){
//en caso de que el contrato exista procedemos a determinar si la partida padre existe.
$id_contrato=contratoExiste($id_proyecto,$claveContrato);
if(partidaExiste($id_contrato,$clavePartidaPadre)){
if($clavePartidaPadre=="0"){
$id_partidaPadre=0;
}else{
$id_partidaPadre=partidaExiste($id_contrato,$clavePartidaPadre);
}
//en caso de existir la partida padre procedemos a verificar si la partida ya existe
if(partidaExiste($id_contrato,$clavePartida)){
//log notificacion de que la partida ya existe.
logImpXlsx("la Partida Clave:".$clavePartida." Descripción:".$descripcion,$currentRow,"Partidas");
}else{
//se inserta la nueva partida en la tabla de partidas.
$stm= "insert into tbl_partidas (clave,descripcion,id_partida_padre,id_contrato) values ('".$clavePartida."','".$descripcion."',".$id_partidaPadre.",".$id_contrato.");";
$res=mysql_query($stm);
}
}else{
//Log Notificacion de que la partida padre no existe por tanto la parida no puede crearse
logImpXlsx("la Partida Padre Clave:" . $clavePartidaPadre . " no existe!!! debe crearla antes de sus Sub Partidas.",$currentRow,"Partidas");
}
}else{
//Log Notificacion de que el contrato no existe por tanto la parida no puede crearse
logImpXlsx("El Contrato Clave:" . $claveContrato . " no existe!!! debe crearlo antes de sus Partidas.",$currentRow,"Partidas");
}
}else{
logImpXlsx("El Proyecto Clave:" . $claveProyecto . " no existe!!! debe crearlo antes de sus Contratos y Partidas.",$currentRow,"Partidas");
}
}
}
function importar_conceptos($sheet){
//log notificacion de que se estan importando partidas
logImpXlsx("importando Conceptos...");
$highestRow = $sheet->getHighestRow();
//recorremos la lista de Partidas
for($currentRow=5;$currentRow<=$highestRow;$currentRow++){
$claveProyecto = $sheet->getCell('A'.$currentRow)->getValue();
$claveContrato = $sheet->getCell('B'.$currentRow)->getValue();
$clavePartida=$sheet->getCell('C'.$currentRow)->getValue();
$id_tp_concepto = $sheet->getCell('D'.$currentRow)->getValue();
$id_tp_concepto = get_id_tp_concepto($id_tp_concepto);
if(!$id_tp_concepto){
//log notificacion de que el concepto tiene un tipo no soportado.
logImpXlsx("Tipo de concepto no soportado",$currentRow,"Conceptos");
}
$claveConcepto = $sheet->getCell('E'.$currentRow)->getValue();
$descripcion = $sheet->getCell('F'.$currentRow)->getValue();
$id_tp_unidad = $sheet->getCell('G'.$currentRow)->getValue();
$id_tp_unidad = get_id_tp_unidad($id_tp_unidad);
if(!$id_tp_unidad){
//log notificacion de que el concepto tiene un tipo no soportado.
logImpXlsx("Unidad no soportada",$currentRow,"Conceptos");
}
$pu = $sheet->getCell('H'.$currentRow)->getValue();
$cantidad = $sheet->getCell('I'.$currentRow)->getValue();
if(proyectoExiste($claveProyecto)){
//en caso de que el proyecto exista procedemos a determinar si el contrato ya esiste.
$id_proyecto=proyectoExiste($claveProyecto);
if(contratoExiste($id_proyecto,$claveContrato)){
//en caso de que el contrato exista procedemos a determinar si la partida padre existe.
$id_contrato=contratoExiste($id_proyecto,$claveContrato);
if(partidaExiste($id_contrato,$clavePartida)){
//en caso de que la partidya exista procedeos a verificar si el concepto existe
$id_partida = partidaExiste($id_contrato,$clavePartida);
if(conceptoExiste($id_partida,$claveConcepto)){
//log notificacion de que el concepto ya existe en la partida.
logImpXlsx("El Concepto Clave:".$claveConcepto." Descripcion:".$descripcion." ya Existe",$currentRow,"Conceptos");
}else{
//se inserta el concepto en la tabla de conceptos.
$stm="INSERT INTO tbl_conceptos (clave,descripcion,id_tp_unidad,pu,cantidad,id_partida,id_contrato,id_tp_concepto) VALUES ('".$claveConcepto."', '".$descripcion."', ".$id_tp_unidad.", ".$pu.", ".$cantidad.", ".$id_partida.", ".$id_contrato.", ".$id_tp_concepto.");";
$res=mysql_query($stm);
}
}else{
//log notificacion de que la partida no existe en el contrato.
logImpXlsx("La partida Clave:" . $clavePartida . " no existe!!! debe crearlo antes de sus Conceptos.",$currentRow,"Conceptos");
}
}else{
//Log Notificacion de que el contrato no existe por tanto la parida no puede crearse
logImpXlsx("El Contrato Clave:" . $claveContrato . " no existe!!! debe crearlo antes de sus Partidas.",$currentRow,"Conceptos");
}
}else{
logImpXlsx("El Proyecto Clave:" . $claveProyecto . " no existe!!! debe crearlo antes de sus Contratos y Partidas.",$currentRow,"Conceptos");
}
}
}
function importar_convenios($sheet){
//log notificacion de que se estan importando partidas
logImpXlsx("importando Convenios...");
$highestRow = $sheet->getHighestRow();
//recorremos la lista de Partidas
for($currentRow=5;$currentRow<=$highestRow;$currentRow++){
$claveProyecto = $sheet->getCell('A'.$currentRow)->getValue();
$claveContrato = $sheet->getCell('B'.$currentRow)->getValue();
$claveConvenio=$sheet->getCell('C'.$currentRow)->getValue();
$descripcion = $sheet->getCell('D'.$currentRow)->getValue();
$fecha = $sheet->getCell('E'.$currentRow)->getValue();
if(PHPExcel_Shared_Date::isDateTime($sheet->getCell('E'.$currentRow))) {
$fecha = date("Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($fecha+1));
$fecha.=" 00:00:00";
}
if(proyectoExiste($claveProyecto)){
//en caso de que el proyecto exista procedemos a determinar si el contrato ya esiste.
$id_proyecto=proyectoExiste($claveProyecto);
if(contratoExiste($id_proyecto,$claveContrato)){
//en caso de que el contrato exista procedemos a determinar si la partida padre existe.
$id_contrato=contratoExiste($id_proyecto,$claveContrato);
//en caso de existir el contrato procedemos a verificar si el convenio existe
if(convenioExiste($id_contrato,$claveConvenio)){
//log notificacion de que la partida ya existe.
logImpXlsx("El Convenio Clave:".$claveConvenio." Descripción:".$descripcion." ya Existe!!!",$currentRow,"Convenios");
}else{
//se inserta el nuevo Convenio en la tabla de convenios.
$stm= "insert into tbl_convenios (clave,descripcion,id_contrato,fecha) values ('".$claveConvenio."','".$descripcion."',".$id_contrato.",'".$fecha."');";
$res=mysql_query($stm);
}
}else{
//Log Notificacion de que el contrato no existe por tanto la parida no puede crearse
logImpXlsx("El Contrato Clave:" . $claveContrato . " no existe!!! debe crearlo antes de sus Partidas.",$currentRow,"Convenios");
}
}else{
logImpXlsx("El Proyecto Clave:" . $claveProyecto . " no existe!!! debe crearlo antes de sus Contratos y Partidas.",$currentRow,"Convenios");
}
}
}
?>
here is the form online.. it myght let you understand what i need.