Fix: remove MySQL dependency, use API fetch for all pages

This commit is contained in:
2026-06-14 20:36:28 +07:00
parent 43e99a0f54
commit 61b1879377
2 changed files with 8 additions and 185 deletions
+3 -100
View File
@@ -1,102 +1,5 @@
<?php
/**
* index.php
* WebGIS Manajemen Data Jalan (Polyline) - PHP Native + MySQL + LeafletJS
*
* Contoh SQL untuk membuat database / tabel dan data sampel:
*
* CREATE DATABASE IF NOT EXISTS db_webgis CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
* USE db_webgis;
*
* CREATE TABLE IF NOT EXISTS t_jalan (
* id INT AUTO_INCREMENT PRIMARY KEY,
* nama_jalan VARCHAR(255) NOT NULL,
* status_jalan ENUM('nasional','provinsi','kabupaten') NOT NULL,
* panjang_meter DECIMAL(10,2) NOT NULL,
* koordinat_json LONGTEXT NOT NULL,
* created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
* );
*
* INSERT INTO t_jalan (nama_jalan, status_jalan, panjang_meter, koordinat_json) VALUES
* ('Jalan Ahmad Yani', 'nasional', 3200, '[[-0.0251,109.3292],[-0.0266,109.3338],[-0.0263,109.3425]]'),
* ('Jalan Supadio', 'provinsi', 2400, '[[-0.0300,109.3270],[-0.0285,109.3335],[-0.0262,109.3420]]'),
* ('Jalan Gajah Mada', 'kabupaten', 1800, '[[-0.0288,109.3389],[-0.0274,109.3452],[-0.0252,109.3501]]');
*/
// Konfigurasi koneksi MySQL: sesuaikan dengan kredensial lokal Anda.
$dbHost = 'localhost';
$dbName = 'webgis_spbu';
$dbUser = 'root';
$dbPass = '';
$dsn = "mysql:host=$dbHost;dbname=$dbName;charset=utf8mb4";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
$errors = [];
$success = '';
$input = [
'nama_jalan' => '',
'status_jalan' => '',
'panjang_meter' => '',
'koordinat_json' => '',
];
try {
$pdo = new PDO($dsn, $dbUser, $dbPass, $options);
// Pastikan tabel t_jalan ada.
$pdo->exec("CREATE TABLE IF NOT EXISTS t_jalan (
id INT AUTO_INCREMENT PRIMARY KEY,
nama_jalan VARCHAR(255) NOT NULL,
status_jalan ENUM('nasional','provinsi','kabupaten') NOT NULL,
panjang_meter DECIMAL(10,2) NOT NULL,
koordinat_json LONGTEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$input['nama_jalan'] = trim($_POST['nama_jalan'] ?? '');
$input['status_jalan'] = $_POST['status_jalan'] ?? '';
$input['panjang_meter'] = $_POST['panjang_meter'] ?? '';
$input['koordinat_json'] = $_POST['koordinat_json'] ?? '';
if ($input['nama_jalan'] === '') {
$errors[] = 'Nama Jalan harus diisi.';
}
if (!in_array($input['status_jalan'], ['nasional', 'provinsi', 'kabupaten'], true)) {
$errors[] = 'Status Jalan tidak valid.';
}
if ($input['panjang_meter'] === '' || !is_numeric($input['panjang_meter']) || (float)$input['panjang_meter'] <= 0) {
$errors[] = 'Panjang Jalan harus dihitung otomatis dari peta dan tidak boleh kosong.';
}
$coords = json_decode($input['koordinat_json'], true);
if (!is_array($coords) || count($coords) < 2) {
$errors[] = 'Koordinat JSON tidak valid: minimal 2 titik diperlukan.';
}
if (empty($errors)) {
$stmt = $pdo->prepare('INSERT INTO t_jalan (nama_jalan, status_jalan, panjang_meter, koordinat_json) VALUES (:nama, :status, :panjang, :koordinat)');
$stmt->execute([
':nama' => $input['nama_jalan'],
':status' => $input['status_jalan'],
':panjang' => (float)$input['panjang_meter'],
':koordinat' => json_encode($coords, JSON_UNESCAPED_UNICODE),
]);
$success = 'Data jalan berhasil disimpan ke database.';
$input = ['nama_jalan' => '', 'status_jalan' => '', 'panjang_meter' => '', 'koordinat_json' => ''];
}
}
$stmt = $pdo->query('SELECT id, nama_jalan, status_jalan, panjang_meter, koordinat_json FROM t_jalan ORDER BY id DESC');
$jalanList = $stmt->fetchAll();
} catch (PDOException $e) {
$errors[] = 'Koneksi database gagal: ' . htmlspecialchars($e->getMessage());
$jalanList = [];
}
// Data diambil dari API - tidak ada koneksi MySQL di frontend ini
?>
<!DOCTYPE html>
<html lang="id">
@@ -244,8 +147,8 @@ try {
</head>
<body>
<header>
<h1>WebGIS Manajemen Data Jalan</h1>
<p>Tambah, simpan, dan tampilkan polyline jalan dengan LeafletJS dan MySQL.</p>
<h1>🛣️ WebGIS Manajemen Data Jalan</h1>
<p>Tambah, simpan, dan tampilkan polyline jalan dengan LeafletJS (API Mode)</p>
</header>
<main>
<section class="card">