exec("CREATE TABLE IF NOT EXISTS taxis ( id INT AUTO_INCREMENT PRIMARY KEY, matricula VARCHAR(255) NOT NULL UNIQUE, modelo VARCHAR(255), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP )"); // Create localizacion_taxis table if it doesn't exist $pdo->exec("CREATE TABLE IF NOT EXISTS localizacion_taxis ( id INT AUTO_INCREMENT PRIMARY KEY, id_taxi INT NOT NULL UNIQUE, -- Un taxi solo puede tener una última ubicación latitud DECIMAL(10, 8) NOT NULL, longitud DECIMAL(11, 8) NOT NULL, ultima_actualizacion TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (id_taxi) REFERENCES taxis(id) )"); // Create location history table $pdo->exec("CREATE TABLE IF NOT EXISTS localizacion_historico ( id INT AUTO_INCREMENT PRIMARY KEY, id_taxi INT NOT NULL, latitud DECIMAL(10, 8) NOT NULL, longitud DECIMAL(11, 8) NOT NULL, fecha_registro TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (id_taxi) REFERENCES taxis(id) )"); // Handle form submission to add a new taxi for simplicity if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['add_taxi'])) { $matricula = trim($_POST['matricula']); $modelo = trim($_POST['modelo']); if(!empty($matricula)) { $stmt = $pdo->prepare("INSERT INTO taxis (matricula, modelo) VALUES (?, ?) ON DUPLICATE KEY UPDATE modelo=VALUES(modelo)"); $stmt->execute([$matricula, $modelo]); } } // Handle form submission for historical location if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['add_localizacion_historica'])) { $id_taxi = $_POST['id_taxi']; $latitud = $_POST['latitud']; $longitud = $_POST['longitud']; $fecha_registro = $_POST['fecha_registro']; if (!empty($id_taxi) && is_numeric($latitud) && is_numeric($longitud) && !empty($fecha_registro)) { try { // Insert into history with specific timestamp $stmt_history = $pdo->prepare("INSERT INTO localizacion_historico (id_taxi, latitud, longitud, fecha_registro) VALUES (?, ?, ?, ?)"); $stmt_history->execute([$id_taxi, $latitud, $longitud, $fecha_registro]); echo ''; } catch (Exception $e) { echo ''; } } else { echo ''; } } // Fetch all taxis for dropdown $taxis_stmt = $pdo->query("SELECT id, matricula, modelo FROM taxis ORDER BY matricula"); $taxis = $taxis_stmt->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e) { die("Error de base de datos: " . $e->getMessage()); } ?>

Localización de Taxis en Tiempo Real

Mapa de Taxis
Historial de Ruta por Taxi
Añadir Ubicación Histórica

Haz clic en un taxi del mapa para rellenar los datos o haz clic en el mapa para obtener coordenadas.

Añadir Nuevo Taxi (para demo)