Fix: remove MySQL dependency, use API fetch for all pages
This commit is contained in:
@@ -1,71 +1,5 @@
|
||||
<?php
|
||||
// Koneksi database PDO
|
||||
$host = '127.0.0.1';
|
||||
$db = 'webgis_spbu';
|
||||
$user = 'root';
|
||||
$pass = '';
|
||||
$charset = 'utf8mb4';
|
||||
|
||||
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
|
||||
$options = [
|
||||
PDO::ATTR_ERRMODE => 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;
|
||||
}
|
||||
// Data diambil dari API - tidak ada koneksi MySQL di frontend ini
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="id">
|
||||
@@ -119,10 +53,7 @@ while ($row = $stmt->fetch()) {
|
||||
|
||||
<div class="card">
|
||||
<?php if (!empty($_GET['saved']) && $_GET['saved'] == 1): ?>
|
||||
<div class="message success">Data tanah berhasil disimpan.</div>
|
||||
<?php endif; ?>
|
||||
<?php if ($errorMessage): ?>
|
||||
<div class="message error"><?= htmlspecialchars($errorMessage) ?></div>
|
||||
<div class="message success">Data tanah berhasil disimpan dari API.</div>
|
||||
<?php endif; ?>
|
||||
<div id="map"></div>
|
||||
<p class="note">Klik beberapa titik pada peta untuk membuat polygon. Tutup polygon dengan klik titik awal lagi untuk menghitung luas otomatis.</p>
|
||||
@@ -164,19 +95,8 @@ while ($row = $stmt->fetch()) {
|
||||
|
||||
<div class="card">
|
||||
<h2>Daftar Parsil Tertinggi & Detail</h2>
|
||||
<div class="info-list">
|
||||
<?php if (empty($tanahData)): ?>
|
||||
<div class="info-card">Belum ada data parsil. Tambahkan bidang tanah melalui peta dan form di atas.</div>
|
||||
<?php else: ?>
|
||||
<?php foreach ($tanahData as $tanah): ?>
|
||||
<div class="info-card">
|
||||
<strong><?= htmlspecialchars($tanah['nama_pemilik']) ?> · <?= htmlspecialchars($tanah['status_kepemilikan']) ?></strong>
|
||||
<div>Luas: <?= number_format($tanah['luas_sqm'], 2, ',', '.') ?> m²</div>
|
||||
<div>Disimpan: <?= htmlspecialchars($tanah['created_at']) ?></div>
|
||||
<div style="margin-top: 10px;"><span class="status-pill status-<?= strtolower($tanah['status_kepemilikan']) ?>"><?= htmlspecialchars($tanah['status_kepemilikan']) ?></span></div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
<div class="info-list" id="tanah-list">
|
||||
<div class="info-card">Memuat data dari API...</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -201,7 +121,7 @@ while ($row = $stmt->fetch()) {
|
||||
HP: '#1d4ed8'
|
||||
};
|
||||
|
||||
const existingData = <?= json_encode($tanahData, JSON_UNESCAPED_UNICODE) ?>;
|
||||
const existingData = []; // Data diambil dari API
|
||||
existingData.forEach(item => {
|
||||
if (!Array.isArray(item.coords)) return;
|
||||
const coords = item.coords.map(c => [c.lat, c.lng]);
|
||||
|
||||
Reference in New Issue
Block a user