query("SELECT foto FROM tb_jalan WHERE id=$id")->fetch_assoc(); if ($row && $row['foto'] && file_exists(__DIR__ . '/' . $row['foto'])) { unlink(__DIR__ . '/' . $row['foto']); } $stmt = $conn->prepare("DELETE FROM tb_jalan WHERE id = ?"); $stmt->bind_param('i', $id); echo $stmt->execute() ? json_encode(['status'=>'ok','message'=>'Data jalan berhasil dihapus']) : json_encode(['status'=>'error','message'=>$conn->error]); $conn->close(); exit; } // ---- GET ---- if ($method === 'GET') { $search = isset($_GET['q']) ? '%' . $conn->real_escape_string($_GET['q']) . '%' : null; if (isset($_GET['id'])) { $id = (int)$_GET['id']; $stmt = $conn->prepare("SELECT * FROM tb_jalan WHERE id = ?"); $stmt->bind_param('i', $id); $stmt->execute(); $data = $stmt->get_result()->fetch_assoc(); echo json_encode(['status'=>'ok','data'=>$data]); } elseif ($search) { $stmt = $conn->prepare("SELECT * FROM tb_jalan WHERE nama_jalan LIKE ? OR status_jalan LIKE ? OR keterangan LIKE ? ORDER BY created_at DESC"); $stmt->bind_param('sss', $search, $search, $search); $stmt->execute(); $rows = $stmt->get_result()->fetch_all(MYSQLI_ASSOC); echo json_encode(['status'=>'ok','data'=>$rows]); } else { $result = $conn->query("SELECT * FROM tb_jalan ORDER BY created_at DESC"); $rows = $result->fetch_all(MYSQLI_ASSOC); echo json_encode(['status'=>'ok','data'=>$rows]); } $conn->close(); exit; } // ---- POST (multipart/form-data untuk support upload foto) ---- if ($method === 'POST') { $nama = $conn->real_escape_string($_POST['nama_jalan'] ?? ''); $status = $conn->real_escape_string($_POST['status_jalan'] ?? 'Kabupaten'); $panjang = (float)($_POST['panjang_meter'] ?? 0); $geojson = $conn->real_escape_string($_POST['geojson'] ?? ''); $ket = $conn->real_escape_string($_POST['keterangan'] ?? ''); $foto = ''; // Upload foto if (!empty($_FILES['foto']['name'])) { $ext = strtolower(pathinfo($_FILES['foto']['name'], PATHINFO_EXTENSION)); $allowed = ['jpg','jpeg','png','webp']; if (in_array($ext, $allowed)) { $fname = 'jalan_' . time() . '_' . rand(1000,9999) . '.' . $ext; if (move_uploaded_file($_FILES['foto']['tmp_name'], $uploadDir . $fname)) { $foto = 'uploads/jalan/' . $fname; } } } $stmt = $conn->prepare("INSERT INTO tb_jalan (nama_jalan,status_jalan,panjang_meter,geojson,keterangan,foto) VALUES (?,?,?,?,?,?)"); $stmt->bind_param('ssdsss', $nama, $status, $panjang, $geojson, $ket, $foto); echo $stmt->execute() ? json_encode(['status'=>'ok','id'=>$conn->insert_id,'message'=>'Data jalan berhasil disimpan']) : json_encode(['status'=>'error','message'=>$conn->error]); $conn->close(); exit; } // ---- PUT (multipart workaround via POST + _method) ---- if ($method === 'PUT' || ($method === 'POST' && ($_POST['_method'] ?? '') === 'PUT')) { parse_str(file_get_contents('php://input'), $put); $id = (int)($_POST['id'] ?? $put['id'] ?? 0); $nama = $conn->real_escape_string($_POST['nama_jalan'] ?? $put['nama_jalan'] ?? ''); $status = $conn->real_escape_string($_POST['status_jalan'] ?? $put['status_jalan'] ?? 'Kabupaten'); $panjang = (float)($_POST['panjang_meter'] ?? $put['panjang_meter'] ?? 0); $geojson = $conn->real_escape_string($_POST['geojson'] ?? $put['geojson'] ?? ''); $ket = $conn->real_escape_string($_POST['keterangan'] ?? $put['keterangan'] ?? ''); // Ambil foto lama $row = $conn->query("SELECT foto FROM tb_jalan WHERE id=$id")->fetch_assoc(); $foto = $row['foto'] ?? ''; if (!empty($_FILES['foto']['name'])) { $ext = strtolower(pathinfo($_FILES['foto']['name'], PATHINFO_EXTENSION)); $allowed = ['jpg','jpeg','png','webp']; if (in_array($ext, $allowed)) { // Hapus foto lama if ($foto && file_exists(__DIR__ . '/' . $foto)) unlink(__DIR__ . '/' . $foto); $fname = 'jalan_' . time() . '_' . rand(1000,9999) . '.' . $ext; if (move_uploaded_file($_FILES['foto']['tmp_name'], $uploadDir . $fname)) { $foto = 'uploads/jalan/' . $fname; } } } $stmt = $conn->prepare("UPDATE tb_jalan SET nama_jalan=?,status_jalan=?,panjang_meter=?,geojson=?,keterangan=?,foto=? WHERE id=?"); $stmt->bind_param('ssdsssi', $nama, $status, $panjang, $geojson, $ket, $foto, $id); echo $stmt->execute() ? json_encode(['status'=>'ok','message'=>'Data jalan berhasil diupdate']) : json_encode(['status'=>'error','message'=>$conn->error]); $conn->close(); exit; } echo json_encode(['status'=>'error','message'=>'Method not allowed']); $conn->close();