Files
2026-06-10 19:48:00 +07:00

112 lines
5.2 KiB
PHP

<?php
// ===================================================
// jalan_rusak.php — CRUD Data Jalan Rusak (Point) + Upload Foto
// ===================================================
require_once 'config.php';
$method = $_SERVER['REQUEST_METHOD'];
$uploadDir = __DIR__ . '/uploads/jalan_rusak/';
if (!is_dir($uploadDir)) mkdir($uploadDir, 0755, true);
// ---- DELETE ----
if ($method === 'DELETE') {
$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;
if (!$id) {
$raw = json_decode(file_get_contents('php://input'), true);
$id = (int)($raw['id'] ?? 0);
}
$row = $conn->query("SELECT foto FROM tb_jalan_rusak 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_rusak WHERE id = ?");
$stmt->bind_param('i', $id);
echo $stmt->execute()
? json_encode(['status'=>'ok','message'=>'Data jalan rusak 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_rusak 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_rusak WHERE lokasi LIKE ? OR tingkat LIKE ? OR jenis LIKE ? OR keterangan LIKE ? ORDER BY created_at DESC");
$stmt->bind_param('ssss', $search, $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_rusak ORDER BY created_at DESC");
$rows = $result->fetch_all(MYSQLI_ASSOC);
echo json_encode(['status'=>'ok','data'=>$rows]);
}
$conn->close(); exit;
}
// ---- POST ----
if ($method === 'POST') {
$lokasi = $conn->real_escape_string($_POST['lokasi'] ?? '');
$tingkat = $conn->real_escape_string($_POST['tingkat'] ?? 'Sedang');
$jenis = $conn->real_escape_string($_POST['jenis'] ?? '');
$geojson = $conn->real_escape_string($_POST['geojson'] ?? '');
$ket = $conn->real_escape_string($_POST['keterangan'] ?? '');
$tgl = $conn->real_escape_string($_POST['tanggal_lapor'] ?? date('Y-m-d'));
$foto = '';
if (!empty($_FILES['foto']['name'])) {
$ext = strtolower(pathinfo($_FILES['foto']['name'], PATHINFO_EXTENSION));
if (in_array($ext, ['jpg','jpeg','png','webp'])) {
$fname = 'rusak_' . time() . '_' . rand(1000,9999) . '.' . $ext;
if (move_uploaded_file($_FILES['foto']['tmp_name'], $uploadDir . $fname))
$foto = 'uploads/jalan_rusak/' . $fname;
}
}
$stmt = $conn->prepare("INSERT INTO tb_jalan_rusak (lokasi,tingkat,jenis,geojson,keterangan,foto,tanggal_lapor) VALUES (?,?,?,?,?,?,?)");
$stmt->bind_param('sssssss', $lokasi, $tingkat, $jenis, $geojson, $ket, $foto, $tgl);
echo $stmt->execute()
? json_encode(['status'=>'ok','id'=>$conn->insert_id,'message'=>'Data jalan rusak berhasil disimpan'])
: json_encode(['status'=>'error','message'=>$conn->error]);
$conn->close(); exit;
}
// ---- PUT ----
if ($method === 'PUT' || ($method === 'POST' && ($_POST['_method'] ?? '') === 'PUT')) {
$id = (int)($_POST['id'] ?? 0);
$lokasi = $conn->real_escape_string($_POST['lokasi'] ?? '');
$tingkat = $conn->real_escape_string($_POST['tingkat'] ?? 'Sedang');
$jenis = $conn->real_escape_string($_POST['jenis'] ?? '');
$geojson = $conn->real_escape_string($_POST['geojson'] ?? '');
$ket = $conn->real_escape_string($_POST['keterangan'] ?? '');
$tgl = $conn->real_escape_string($_POST['tanggal_lapor'] ?? date('Y-m-d'));
$row = $conn->query("SELECT foto FROM tb_jalan_rusak WHERE id=$id")->fetch_assoc();
$foto = $row['foto'] ?? '';
if (!empty($_FILES['foto']['name'])) {
$ext = strtolower(pathinfo($_FILES['foto']['name'], PATHINFO_EXTENSION));
if (in_array($ext, ['jpg','jpeg','png','webp'])) {
if ($foto && file_exists(__DIR__ . '/' . $foto)) unlink(__DIR__ . '/' . $foto);
$fname = 'rusak_' . time() . '_' . rand(1000,9999) . '.' . $ext;
if (move_uploaded_file($_FILES['foto']['tmp_name'], $uploadDir . $fname))
$foto = 'uploads/jalan_rusak/' . $fname;
}
}
$stmt = $conn->prepare("UPDATE tb_jalan_rusak SET lokasi=?,tingkat=?,jenis=?,geojson=?,keterangan=?,foto=?,tanggal_lapor=? WHERE id=?");
$stmt->bind_param('sssssssi', $lokasi, $tingkat, $jenis, $geojson, $ket, $foto, $tgl, $id);
echo $stmt->execute()
? json_encode(['status'=>'ok','message'=>'Data jalan rusak berhasil diupdate'])
: json_encode(['status'=>'error','message'=>$conn->error]);
$conn->close(); exit;
}
echo json_encode(['status'=>'error','message'=>'Method not allowed']);
$conn->close();