edit files
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
<?php
|
||||
// ===================================================
|
||||
// jalan.php — CRUD Data Jalan (Polyline) + Upload Foto
|
||||
// ===================================================
|
||||
|
||||
require_once 'config.php';
|
||||
|
||||
$method = $_SERVER['REQUEST_METHOD'];
|
||||
|
||||
// Folder upload
|
||||
$uploadDir = __DIR__ . '/uploads/jalan/';
|
||||
if (!is_dir($uploadDir)) mkdir($uploadDir, 0755, true);
|
||||
|
||||
// ---- Tangani DELETE via query string ----
|
||||
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);
|
||||
}
|
||||
// Hapus foto lama jika ada
|
||||
$row = $conn->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();
|
||||
Reference in New Issue
Block a user