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 if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['add_localizacion'])) { $id_taxi = $_POST['id_taxi']; $latitud = $_POST['latitud']; $longitud = $_POST['longitud']; if (!empty($id_taxi) && is_numeric($latitud) && is_numeric($longitud)) { $pdo->beginTransaction(); try { // Upsert (Update or Insert) the last known location $stmt_upsert = $pdo->prepare( "INSERT INTO localizacion_taxis (id_taxi, latitud, longitud) VALUES (?, ?, ?) " . "ON DUPLICATE KEY UPDATE latitud = VALUES(latitud), longitud = VALUES(longitud)" ); $stmt_upsert->execute([$id_taxi, $latitud, $longitud]); // Insert into history $stmt_history = $pdo->prepare("INSERT INTO localizacion_historico (id_taxi, latitud, longitud) VALUES (?, ?, ?)"); $stmt_history->execute([$id_taxi, $latitud, $longitud]); $pdo->commit(); echo ''; } catch (Exception $e) { $pdo->rollBack(); 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 o Actualizar Localización
Añadir Nuevo Taxi (para demo)