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

include('conexion.php');  // Incluye el archivo de conexión a la base de datos remota

// Verificar si se ha subido un archivo
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['file'])) {
    $uploadDir = __DIR__ . '/uploads/';  // Asegúrate de que esta ruta sea correcta
    $uploadFile = $uploadDir . basename($_FILES['file']['name']);

    // Verificar si el archivo se sube correctamente
    if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadFile)) {
        echo "El archivo ha sido subido con éxito.<br>";

        // Guardar la ruta del archivo en la sesión para usarla más tarde
        $_SESSION['uploadFile'] = $uploadFile;

        // Verificar la ruta del archivo
        echo "Ruta del archivo: " . $uploadFile . "<br>";

        // Conectar a la base de datos .mdb (Microsoft Access) local
        $dsn = 'Driver={Microsoft Access Driver (*.mdb)};DBQ=' . str_replace('/', '\\', $uploadFile) . ';';
        echo "Intentando conexión con DSN: " . $dsn . "<br>";

        // Intentar conectar
        $conn = odbc_connect($dsn, '', '');
        
        if (!$conn) {
            // Mostrar error si la conexión falla
            echo "Error de conexión: " . odbc_errormsg() . "<br>";
        } else {
            echo "Conexión exitosa a la base de datos .mdb.<br>";

            // Obtener las tablas de la base de datos .mdb
            $tables = [];
            $result = odbc_tables($conn);

            if (!$result) {
                // Mostrar error si no se pueden obtener las tablas
                echo "Error al obtener tablas: " . odbc_errormsg() . "<br>";
            } else {
                // Si se han obtenido tablas
                while ($row = odbc_fetch_array($result)) {
                    if ($row['TABLE_TYPE'] == 'TABLE') {  // Solo las tablas, no vistas u otros objetos
                        $tables[] = $row['TABLE_NAME'];
                    }
                }

                odbc_free_result($result);
            }

            odbc_close($conn);

            // Verificar si se han encontrado tablas
            if (count($tables) > 0) {
                echo '<form method="POST" action="create_tables.php">';
                echo 'Selecciona las tablas que deseas crear en la base remota:<br>';

                foreach ($tables as $table) {
                    echo '<input type="checkbox" name="tables[]" value="' . $table . '">' . $table . '<br>';
                }

                echo '<input type="submit" value="Crear Tablas">';
                echo '</form>';
            } else {
                echo "No se encontraron tablas en el archivo .mdb.";
            }
        }
    } else {
        echo "Error al subir el archivo. Asegúrate de que el archivo no sea demasiado grande y que tengas permisos de escritura en el servidor.";
    }
} else {
    echo "Por favor, selecciona un archivo .mdb para cargar.";
}
?>

<!-- Formulario para cargar el archivo .mdb -->
<form enctype="multipart/form-data" method="POST">
    <label for="file">Seleccionar archivo .mdb:</label>
    <input type="file" name="file" id="file" accept=".mdb" required>
    <input type="submit" value="Subir archivo">
</form>
