PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]; try { $pdo = new PDO($dsn, $user, $pass, $options); } catch (PDOException $e) { die('Koneksi gagal: ' . htmlspecialchars($e->getMessage())); } // Buat tabel jika belum ada $createTableSql = "CREATE TABLE IF NOT EXISTS t_tanah ( id INT AUTO_INCREMENT PRIMARY KEY, nama_pemilik VARCHAR(255) NOT NULL, status_kepemilikan ENUM('SHM', 'HGB', 'HGU', 'HP') NOT NULL, luas_sqm DECIMAL(10,2) NOT NULL, koordinat_json LONGTEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci"; $pdo->exec($createTableSql); // Simpan data jika form disubmit $successMessage = ''; $errorMessage = ''; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $namaPemilik = trim($_POST['nama_pemilik'] ?? ''); $statusKepemilikan = $_POST['status_kepemilikan'] ?? ''; $luasSqm = $_POST['luas_sqm'] ?? ''; $koordinatJson = $_POST['koordinat_json'] ?? ''; if ($namaPemilik === '' || $statusKepemilikan === '' || $luasSqm === '' || $koordinatJson === '') { $errorMessage = 'Semua field harus diisi dan polygon harus dibuat sebelum submit.'; } else { try { $stmt = $pdo->prepare('INSERT INTO t_tanah (nama_pemilik, status_kepemilikan, luas_sqm, koordinat_json) VALUES (:nama, :status, :luas, :koordinat)'); $stmt->execute([ ':nama' => $namaPemilik, ':status' => $statusKepemilikan, ':luas' => $luasSqm, ':koordinat' => $koordinatJson, ]); $successMessage = 'Data tanah berhasil disimpan.'; header('Location: ' . $_SERVER['PHP_SELF'] . '?saved=1'); exit; } catch (PDOException $e) { $errorMessage = 'Gagal menyimpan data: ' . htmlspecialchars($e->getMessage()); } } } // Ambil semua data polygon $tanahData = []; $stmt = $pdo->query('SELECT id, nama_pemilik, status_kepemilikan, luas_sqm, koordinat_json, created_at FROM t_tanah ORDER BY created_at DESC'); while ($row = $stmt->fetch()) { $row['coords'] = json_decode($row['koordinat_json'], true); $tanahData[] = $row; } ?>
Tambah, lihat, dan simpan data polygon bidang tanah dengan perhitungan luas otomatis menggunakan Leaflet & PHP PDO.
Klik beberapa titik pada peta untuk membuat polygon. Tutup polygon dengan klik titik awal lagi untuk menghitung luas otomatis.