<?php
session_start();  // Inicia la sesión

include('conexion.php');  // Conexión a la base remota

// Verificar si la ruta del archivo está en la sesión
if (!isset($_SESSION['uploadFile'])) {
    die("No se ha subido ningún archivo.");
}

$uploadFile = $_SESSION['uploadFile'];  // Recuperar la ruta del archivo de la sesión

// Verificar si se seleccionaron tablas
if (isset($_POST['tables'])) {
    $selectedTables = $_POST['tables'];

    // Conectar a la base de datos .mdb local (subida)
    $dsn = 'Driver={Microsoft Access Driver (*.mdb)};DBQ=' . str_replace('/', '\\', $uploadFile) . ';';
    $conn = odbc_connect($dsn, '', '');

    if (!$conn) {
        die("Conexión fallida: " . odbc_errormsg());
    }

    // Crear las tablas en la base remota
    foreach ($selectedTables as $tableName) {
        // Obtener la descripción de las columnas de la tabla de la base .mdb
        $columns = odbc_columns($conn, NULL, NULL, $tableName);
        
        // Crear la consulta SQL para crear la tabla en MySQL (base remota)
        $createTableSql = "CREATE TABLE $tableName (";

        // Procesar las columnas y sus tipos
        while ($column = odbc_fetch_array($columns)) {
            $columnName = $column['COLUMN_NAME'];
            $columnType = $column['TYPE_NAME']; // Tipo de columna (por ejemplo, VARCHAR, INTEGER, etc.)
            
            // Mapea el tipo de datos de Access a tipos compatibles con MySQL
            switch ($columnType) {
                case 'TEXT':
                    $columnType = 'VARCHAR(255)';
                    break;
                case 'MEMO':
                    $columnType = 'TEXT';
                    break;
                case 'INTEGER':
                    $columnType = 'INT';
                    break;
                case 'LONG':
                    $columnType = 'BIGINT';
                    break;
                case 'CURRENCY':
                    $columnType = 'DECIMAL(10, 2)';
                    break;
                // Agrega más mapeos según tus necesidades
                default:
                    $columnType = 'VARCHAR(255)';
                    break;
            }

            // Añadir la columna al comando SQL de creación
            $createTableSql .= "$columnName $columnType, ";
        }

        // Eliminar la última coma y espacio
        $createTableSql = rtrim($createTableSql, ', ') . ')';
        
        // Ejecutar la creación de la tabla en la base remota
        $remoteConn = new mysqli('remote_host', 'remote_user', 'remote_password', 'remote_database');
        if ($remoteConn->connect_error) {
            die("Conexión fallida: " . $remoteConn->connect_error);
        }
        
        if ($remoteConn->query($createTableSql) === TRUE) {
            echo "Tabla $tableName creada con éxito.<br>";
        } else {
            echo "Error al crear la tabla $tableName: " . $remoteConn->error . "<br>";
        }

        // Insertar los datos en la base remota
        $result = odbc_exec($conn, "SELECT * FROM $tableName");
        
        while ($row = odbc_fetch_array($result)) {
            $insertSql = "INSERT INTO $tableName (";
            $valuesSql = "VALUES (";
            
            foreach ($row as $columnName => $value) {
                $insertSql .= "$columnName, ";
                $valuesSql .= "'$value', ";
            }

            // Eliminar la última coma y espacio
            $insertSql = rtrim($insertSql, ', ') . ')';
            $valuesSql = rtrim($valuesSql, ', ') . ')';

            $finalSql = $insertSql . ' ' . $valuesSql;
            if ($remoteConn->query($finalSql) === TRUE) {
                echo "Datos insertados en la tabla $tableName.<br>";
            } else {
                echo "Error al insertar datos en la tabla $tableName: " . $remoteConn->error . "<br>";
            }
        }

        odbc_free_result($result);
        odbc_free_result($columns);  // Liberar la memoria
        $remoteConn->close();
    }

    odbc_close($conn);
} else {
    echo "No se seleccionaron tablas.";
}
?>
