UAS SIG Proyek WebGis
This commit is contained in:
@@ -0,0 +1,141 @@
|
||||
<?php
|
||||
// ============================================
|
||||
// api/jalan.php - CRUD API Data Jalan
|
||||
// ============================================
|
||||
|
||||
require_once '../config.php';
|
||||
|
||||
$method = $_SERVER['REQUEST_METHOD'];
|
||||
$db = getDB();
|
||||
|
||||
switch ($method) {
|
||||
|
||||
// ── READ: Ambil semua / satu jalan ──────────────────────────────
|
||||
case 'GET':
|
||||
if (isset($_GET['id'])) {
|
||||
$id = intval($_GET['id']);
|
||||
$stmt = $db->prepare("SELECT * FROM jalan WHERE id = ?");
|
||||
$stmt->bind_param('i', $id);
|
||||
$stmt->execute();
|
||||
$result = $stmt->get_result();
|
||||
$row = $result->fetch_assoc();
|
||||
if ($row) {
|
||||
$row['geometry'] = json_decode($row['geometry']);
|
||||
echo json_encode(['success' => true, 'data' => $row]);
|
||||
} else {
|
||||
http_response_code(404);
|
||||
echo json_encode(['success' => false, 'message' => 'Data tidak ditemukan']);
|
||||
}
|
||||
} else {
|
||||
$result = $db->query("SELECT * FROM jalan ORDER BY created_at DESC");
|
||||
$data = [];
|
||||
while ($row = $result->fetch_assoc()) {
|
||||
$row['geometry'] = json_decode($row['geometry']);
|
||||
$data[] = $row;
|
||||
}
|
||||
echo json_encode(['success' => true, 'data' => $data]);
|
||||
}
|
||||
break;
|
||||
|
||||
// ── CREATE: Tambah jalan baru ───────────────────────────────────
|
||||
case 'POST':
|
||||
$input = json_decode(file_get_contents('php://input'), true);
|
||||
|
||||
if (
|
||||
empty($input['nama_jalan']) ||
|
||||
empty($input['status_jalan']) ||
|
||||
empty($input['geometry']) ||
|
||||
!isset($input['panjang'])
|
||||
) {
|
||||
http_response_code(400);
|
||||
echo json_encode(['success' => false, 'message' => 'Data tidak lengkap']);
|
||||
break;
|
||||
}
|
||||
|
||||
$nama_jalan = trim($input['nama_jalan']);
|
||||
$status_jalan = $input['status_jalan'];
|
||||
$panjang = floatval($input['panjang']);
|
||||
$geometry = json_encode($input['geometry']);
|
||||
|
||||
$valid_status = ['Nasional', 'Provinsi', 'Kabupaten'];
|
||||
if (!in_array($status_jalan, $valid_status)) {
|
||||
http_response_code(400);
|
||||
echo json_encode(['success' => false, 'message' => 'Status jalan tidak valid']);
|
||||
break;
|
||||
}
|
||||
|
||||
$stmt = $db->prepare(
|
||||
"INSERT INTO jalan (nama_jalan, status_jalan, panjang, geometry) VALUES (?, ?, ?, ?)"
|
||||
);
|
||||
$stmt->bind_param('ssds', $nama_jalan, $status_jalan, $panjang, $geometry);
|
||||
|
||||
if ($stmt->execute()) {
|
||||
echo json_encode([
|
||||
'success' => true,
|
||||
'message' => 'Data jalan berhasil disimpan',
|
||||
'id' => $db->insert_id
|
||||
]);
|
||||
} else {
|
||||
http_response_code(500);
|
||||
echo json_encode(['success' => false, 'message' => 'Gagal menyimpan data']);
|
||||
}
|
||||
break;
|
||||
|
||||
// ── UPDATE: Edit jalan ──────────────────────────────────────────
|
||||
case 'PUT':
|
||||
$input = json_decode(file_get_contents('php://input'), true);
|
||||
|
||||
if (empty($input['id'])) {
|
||||
http_response_code(400);
|
||||
echo json_encode(['success' => false, 'message' => 'ID diperlukan']);
|
||||
break;
|
||||
}
|
||||
|
||||
$id = intval($input['id']);
|
||||
$nama_jalan = trim($input['nama_jalan']);
|
||||
$status_jalan = $input['status_jalan'];
|
||||
$panjang = floatval($input['panjang']);
|
||||
$geometry = json_encode($input['geometry']);
|
||||
|
||||
$stmt = $db->prepare(
|
||||
"UPDATE jalan SET nama_jalan=?, status_jalan=?, panjang=?, geometry=? WHERE id=?"
|
||||
);
|
||||
$stmt->bind_param('ssdsi', $nama_jalan, $status_jalan, $panjang, $geometry, $id);
|
||||
|
||||
if ($stmt->execute()) {
|
||||
echo json_encode(['success' => true, 'message' => 'Data jalan berhasil diupdate']);
|
||||
} else {
|
||||
http_response_code(500);
|
||||
echo json_encode(['success' => false, 'message' => 'Gagal mengupdate data']);
|
||||
}
|
||||
break;
|
||||
|
||||
// ── DELETE: Hapus jalan ─────────────────────────────────────────
|
||||
case 'DELETE':
|
||||
$input = json_decode(file_get_contents('php://input'), true);
|
||||
$id = intval($input['id'] ?? ($_GET['id'] ?? 0));
|
||||
|
||||
if (!$id) {
|
||||
http_response_code(400);
|
||||
echo json_encode(['success' => false, 'message' => 'ID diperlukan']);
|
||||
break;
|
||||
}
|
||||
|
||||
$stmt = $db->prepare("DELETE FROM jalan WHERE id = ?");
|
||||
$stmt->bind_param('i', $id);
|
||||
|
||||
if ($stmt->execute() && $stmt->affected_rows > 0) {
|
||||
echo json_encode(['success' => true, 'message' => 'Data jalan berhasil dihapus']);
|
||||
} else {
|
||||
http_response_code(404);
|
||||
echo json_encode(['success' => false, 'message' => 'Data tidak ditemukan']);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
http_response_code(405);
|
||||
echo json_encode(['success' => false, 'message' => 'Method tidak diizinkan']);
|
||||
}
|
||||
|
||||
$db->close();
|
||||
?>
|
||||
Reference in New Issue
Block a user