initial webgis spbu

This commit is contained in:
2026-06-11 14:02:22 +07:00
commit 47fb12d57b
7 changed files with 1203 additions and 0 deletions
+26
View File
@@ -0,0 +1,26 @@
<?php
// api/config.php
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASS', '');
define('DB_NAME', 'spbu');
function getDB(): mysqli {
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if ($conn->connect_error) {
http_response_code(500);
die(json_encode(['error' => 'Koneksi database gagal: ' . $conn->connect_error]));
}
$conn->set_charset('utf8mb4');
return $conn;
}
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
http_response_code(200);
exit;
}
+80
View File
@@ -0,0 +1,80 @@
<?php
// api/jalan.php — CRUD untuk data Jalan (Polyline)
require_once 'config.php';
$db = getDB();
$method = $_SERVER['REQUEST_METHOD'];
$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;
switch ($method) {
case 'GET':
if ($id) {
$stmt = $db->prepare("SELECT * FROM jalan WHERE id = ?");
$stmt->bind_param('i', $id);
$stmt->execute();
$row = $stmt->get_result()->fetch_assoc();
echo json_encode($row ?: ['error' => 'Data tidak ditemukan']);
} else {
$res = $db->query("SELECT * FROM jalan ORDER BY id DESC");
$rows = [];
while ($r = $res->fetch_assoc()) $rows[] = $r;
echo json_encode($rows);
}
break;
case 'POST':
$body = json_decode(file_get_contents('php://input'), true);
$stmt = $db->prepare(
"INSERT INTO jalan (nama_jalan, status_jalan, panjang_m, geojson)
VALUES (?, ?, ?, ?)"
);
$stmt->bind_param(
'ssds',
$body['nama_jalan'], $body['status_jalan'],
$body['panjang_m'], $body['geojson']
);
if ($stmt->execute()) {
echo json_encode(['success' => true, 'id' => $db->insert_id]);
} else {
http_response_code(500);
echo json_encode(['error' => $db->error]);
}
break;
case 'PUT':
$body = json_decode(file_get_contents('php://input'), true);
$stmt = $db->prepare(
"UPDATE jalan SET nama_jalan=?, status_jalan=?, panjang_m=?, geojson=?
WHERE id=?"
);
$stmt->bind_param(
'ssdsi',
$body['nama_jalan'], $body['status_jalan'],
$body['panjang_m'], $body['geojson'],
$body['id']
);
if ($stmt->execute()) {
echo json_encode(['success' => true]);
} else {
http_response_code(500);
echo json_encode(['error' => $db->error]);
}
break;
case 'DELETE':
$stmt = $db->prepare("DELETE FROM jalan WHERE id=?");
$stmt->bind_param('i', $id);
if ($stmt->execute()) {
echo json_encode(['success' => true]);
} else {
http_response_code(500);
echo json_encode(['error' => $db->error]);
}
break;
default:
http_response_code(405);
echo json_encode(['error' => 'Method tidak diizinkan']);
}
$db->close();
+80
View File
@@ -0,0 +1,80 @@
<?php
// api/parsil.php — CRUD untuk data Parsil Tanah (Polygon)
require_once 'config.php';
$db = getDB();
$method = $_SERVER['REQUEST_METHOD'];
$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;
switch ($method) {
case 'GET':
if ($id) {
$stmt = $db->prepare("SELECT * FROM parsil WHERE id = ?");
$stmt->bind_param('i', $id);
$stmt->execute();
$row = $stmt->get_result()->fetch_assoc();
echo json_encode($row ?: ['error' => 'Data tidak ditemukan']);
} else {
$res = $db->query("SELECT * FROM parsil ORDER BY id DESC");
$rows = [];
while ($r = $res->fetch_assoc()) $rows[] = $r;
echo json_encode($rows);
}
break;
case 'POST':
$body = json_decode(file_get_contents('php://input'), true);
$stmt = $db->prepare(
"INSERT INTO parsil (nama_pemilik, status_sertifikat, luas_m2, geojson)
VALUES (?, ?, ?, ?)"
);
$stmt->bind_param(
'ssds',
$body['nama_pemilik'], $body['status_sertifikat'],
$body['luas_m2'], $body['geojson']
);
if ($stmt->execute()) {
echo json_encode(['success' => true, 'id' => $db->insert_id]);
} else {
http_response_code(500);
echo json_encode(['error' => $db->error]);
}
break;
case 'PUT':
$body = json_decode(file_get_contents('php://input'), true);
$stmt = $db->prepare(
"UPDATE parsil SET nama_pemilik=?, status_sertifikat=?, luas_m2=?, geojson=?
WHERE id=?"
);
$stmt->bind_param(
'ssdsi',
$body['nama_pemilik'], $body['status_sertifikat'],
$body['luas_m2'], $body['geojson'],
$body['id']
);
if ($stmt->execute()) {
echo json_encode(['success' => true]);
} else {
http_response_code(500);
echo json_encode(['error' => $db->error]);
}
break;
case 'DELETE':
$stmt = $db->prepare("DELETE FROM parsil WHERE id=?");
$stmt->bind_param('i', $id);
if ($stmt->execute()) {
echo json_encode(['success' => true]);
} else {
http_response_code(500);
echo json_encode(['error' => $db->error]);
}
break;
default:
http_response_code(405);
echo json_encode(['error' => 'Method tidak diizinkan']);
}
$db->close();
+86
View File
@@ -0,0 +1,86 @@
<?php
// api/spbu.php — CRUD untuk data SPBU (Point)
require_once 'config.php';
$db = getDB();
$method = $_SERVER['REQUEST_METHOD'];
$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;
switch ($method) {
// ── GET all or single ─────────────────────────────────────
case 'GET':
if ($id) {
$stmt = $db->prepare("SELECT * FROM spbu WHERE id = ?");
$stmt->bind_param('i', $id);
$stmt->execute();
$row = $stmt->get_result()->fetch_assoc();
echo json_encode($row ?: ['error' => 'Data tidak ditemukan']);
} else {
$res = $db->query("SELECT * FROM spbu ORDER BY id DESC");
$rows = [];
while ($r = $res->fetch_assoc()) $rows[] = $r;
echo json_encode($rows);
}
break;
// ── POST create ───────────────────────────────────────────
case 'POST':
$body = json_decode(file_get_contents('php://input'), true);
$stmt = $db->prepare(
"INSERT INTO spbu (nama_spbu, nomor_wa, buka_24jam, latitude, longitude)
VALUES (?, ?, ?, ?, ?)"
);
$stmt->bind_param(
'ssidd',
$body['nama_spbu'], $body['nomor_wa'],
$body['buka_24jam'],
$body['latitude'], $body['longitude']
);
if ($stmt->execute()) {
echo json_encode(['success' => true, 'id' => $db->insert_id]);
} else {
http_response_code(500);
echo json_encode(['error' => $db->error]);
}
break;
// ── PUT update ────────────────────────────────────────────
case 'PUT':
$body = json_decode(file_get_contents('php://input'), true);
$stmt = $db->prepare(
"UPDATE spbu SET nama_spbu=?, nomor_wa=?, buka_24jam=?, latitude=?, longitude=?
WHERE id=?"
);
$stmt->bind_param(
'ssiddi',
$body['nama_spbu'], $body['nomor_wa'],
$body['buka_24jam'],
$body['latitude'], $body['longitude'],
$body['id']
);
if ($stmt->execute()) {
echo json_encode(['success' => true]);
} else {
http_response_code(500);
echo json_encode(['error' => $db->error]);
}
break;
// ── DELETE ────────────────────────────────────────────────
case 'DELETE':
$stmt = $db->prepare("DELETE FROM spbu WHERE id=?");
$stmt->bind_param('i', $id);
if ($stmt->execute()) {
echo json_encode(['success' => true]);
} else {
http_response_code(500);
echo json_encode(['error' => $db->error]);
}
break;
default:
http_response_code(405);
echo json_encode(['error' => 'Method tidak diizinkan']);
}
$db->close();