#!/usr/bin/perl
$| = 1; # Para que Perl no utilize su buffer
use DBI; # Usar el DataBase Interface
use CGI qw/:standard/; # Usar el GCI.pm module
use strict 'vars';
###############################################################################
my($script_url) = url(-absolute=>1); # direccion absoluta del script
use vars '$dbh'; # Database handler
use vars '$sth'; # Statement handlers
my ($dbuser, $dbpasswd); # User y Passwd p/ Base de Datos
my ($id) = param('id'); # ID obtenido despues del login
###############################################################################
&delete_old_files;
($id, $dbuser, $dbpasswd) = &get_id();
$dbh = DBI->connect("DBI:mysql:accesnot_sanchezm", $dbuser, $dbpasswd);
if (!defined $dbh) {
print redirect(-uri=>'/adm/');
&exit_script;
}
else { &save_user_file($dbuser, $dbpasswd); }
# si se preciono el botton cancel
if ( (param('cancel')) || (param('back')) ) {
print redirect(-uri=>'http://www.notariasanchezmanrique.com/index.htm');
&exit_script;
}
print header(-expires=>'-10m');
print start_html(-title=>"Mantenimiento del Web",
-style=>{'src'=>"/consultas/style-det.css"},
-BGCOLOR=>'FFFFFF' );
print "\n\n";
### debug #####################################################################
#my ($key_form);
#foreach $key_form (param()) { print ( "$key_form\=", param($key_form), "
\n" ); }
#print "id\=$id
\n";
###############################################################################
if (param('save') ne "") { &process }
elsif (param('process') ne "") { &save_data; }
else { &show_form }
print end_html; # Fin de HTML
&exit_script;
###############################################################################
sub exit_script { # Desconecta de la base de datos y sale del script
if (defined $dbh) { $dbh->disconnect; }
exit;
}
###############################################################################
sub show_form {
print qq~
Transferencia de Datos |
\n";
(@time) = (localtime)[0..5];
$time[4] += 1; $time[5] += 1900;
$fname = $time[5] . sprintf("%.2d", $time[4]) . sprintf("%.2d", $time[3]) .
sprintf("%.2d", $time[2]) . sprintf("%.2d", $time[1]) .
sprintf("%.2d", $time[0]) . ".csv";
open UPLOADFILE, ">./var/$fname" || die "Error transferiendo archivos";
$total_bytes = 0;
while ($bytes = read(param("datafile"),$data,1024)) {
print UPLOADFILE $data;
$total_bytes += $bytes;
}
close UPLOADFILE;
print "Archivo recibido - $total_bytes bytes. \n"; $err_found = 0; $records=0; $line = 1; open (DATA, "./var/$fname") || die("No se puede abrir archivo de datos"); while () { $line++; chomp $_; if ($_ ne "") { @tmp = split(",", $_); if ($tmp[3]) { $records++; } else { print "\n\n\n"; $err_found = 1; if (!$err_line) { $err_line = $line; } } } } close DATA; if ($err_found == 1) { print qq~ Inconsistencia de datos encontrada ($err_line) Revise el archivo de datos ~; } else { print qq~ $records registros encontrados Desea cargar la informacion en la BD ? ~; } print " |
\n";
$records = 0; $errors = 0;
$str = open (DATA, "./var/$fname");
if (!$str) {
print "No se puede abrir archivo de datos";
exit;
}
# borramos los registros actuales
$sth = $dbh->do("DELETE FROM dato");
if ($sth = 0) {
print "ERROR borrando registros...";
exit;
}
while () {
chomp $_; # quitamos el \n y \r
s/\r//g;
@data = split(",", $_);
if ($data[3]) { # No de Kardex not null
$insert_sth = "INSERT dato SET ";
for ($count=0; $count<=(@fields-1); $count++) {
if ($fields[$count] ne 'NULL') {
if ($count > 0) { $insert_sth .= ", "; }
$insert_sth .= $fields[$count] . "=";
if ($data[$count] ne "") {
# reemplazamos * con \n y los caracteres peligrosos
$str = $data[$count];
$str =~ s/\*/\\n/g;
$str =~ s/\'/\\'/g; $str =~ s/\"/\\"/g;
$insert_sth .= "'" . $str . "' ";
}
else {
$insert_sth .= "NULL ";
}
}
}
$sth = $dbh->do($insert_sth);
if ($sth <= 0) {
$errors++;
print "\n";
}
else { $records++; }
}
}
print qq~
$records registros transferidos $errors errores encontrados ~; print " |