sub crearTabla ...
#Subrutina insertar.
sub insertar ...
#Subrutina comprobarDB.
sub comprobarDB ...
# Conectar base de datos y mirar si existe.
&comprobarDB(); # Llamada a subrutina CompararDB.
my($conexion,$sth); # Declaración de las variables que utilizaremos a continuación.
$conexion = ConectarDB->connect(); # Conectamos con la base de datos desde el paquete ConectarDB y lo dejamos en la variable $dbh.
my $BASE = ReadData('test', cells => 0, attr => 1);
die "ERROR: Base de datos no encontrada" if not $BASE;
my %HOJAS = reverse %{$BASE->[0]->{sheet}};
my $sheets = $BASE->[0]->{sheets}; #Número de hojas.
my($fila_enc, $col_enc, $tabla);
my %palabras_en_base_de_datos;
foreach my $hoja (1..$sheets){
print "Hoja ", $HOJAS{$hoja}, "\n";
$tabla = $HOJAS{$hoja};
$sth = $conexion->prepare("SELECT * FROM $tabla")or die("Couldn't prepare statement: " . $conexion->errstr);
$sth->execute()or die("Couldn't execute statement: " . $sth->errstr);
while (my $ref = $sth->fetchrow_hashref()) {
$palabras_en_base_de_datos{$ref->{'palabra'}} = 1; # Apuntamos la palabra en nuestro diccionario
}
$sth->finish();
&crearTabla($tabla, $conexion);
my $maxrow = $BASE->[$hoja]->{maxrow}; # número máximo de filas que hay en la hoja
my $maxcol = $BASE->[$hoja]->{maxcol}; # número máximo de columnas que hay en la hoja
BUCLE:
foreach my $fila (1..$maxrow){
foreach my $columna (1..$maxcol){
my $cell = $BASE->[$hoja]->{cell}->[$columna]->[$fila]; # accedemos a la celda correspondiente
if (defined $cell and $cell =~ m/^h/i) { # Mirar si la celda empieza por "h"
$fila_enc = $fila;
$col_enc = $columna;
last BUCLE;
}
}
}
my %palabras_en_excel;
foreach my $fil($fila_enc..$maxrow) {
# Hacer algo con el contenido de la celda $HOJA->[$columna]->[$fila]
my $celda = $BASE->[$hoja]->{cell}->[$col_enc]->[$fil];
printf(" Palabra en Ingles: %s\n",$celda);
my $celda_ant = $BASE->[$hoja]->{cell}->[$col_enc-1]->[$fil];
my $celda_opcional;
if (defined $celda_ant){
printf(" Palabra en Castellano: %s ",$celda_ant);
$palabras_en_excel{$celda_ant} = 1;
$celda_opcional = $celda_ant;
}else{
$palabras_en_excel{$celda_opcional} = 1;
print "Opcional\n";
}
}
#Encontrar palabras que insertar o que borrar.
my @palabras_borradas; # aquí guardaremos las palabras a eliminar
if (%palabras_en_base_de_datos){ #si ha cargado las palabras de la base de datos.
## Recorremos la base de datos
for my $palabra (keys %palabras_en_base_de_datos) {
if (exists $palabras_en_excel{$palabra}) {# Si también existe la palabra en el Excel...
delete $palabras_en_excel{$palabra}; # la quitamos
}else { # no existe: el usuario la ha borrado
push @palabras_borradas, $palabra; # la guardamos para luego
}
}
}else{
for my $palabra (keys %palabras_en_base_de_datos) {
&insertar($palabra, ?¿?¿, $tabla, $conexion); #Llamada a la subrutina insertar.Pasamos el link, el nombre de la empresa, el nombre de la tabla y la conexión.
}
}
# En %palabras_en_excel quedarán las palabras nuevas que hay que meter en la base de datos
print "Nuevos palabras a meter: ", join('/', keys %palabras_en_excel), "\n";
# Y en @palabras_borradas, las que hay que quitar de la base de datos
print "Palabras a borrar: ", join('/', @palabras_borradas), "\n";
}