Add WebGIS source code
This commit is contained in:
@@ -0,0 +1,223 @@
|
||||
<?php
|
||||
|
||||
session_start();
|
||||
|
||||
if(!isset($_SESSION['role'])){
|
||||
|
||||
header("Location: ../index.php");
|
||||
exit;
|
||||
}
|
||||
|
||||
if($_SESSION['role'] != 'cs'){
|
||||
|
||||
header("Location: ../index.php");
|
||||
exit;
|
||||
}
|
||||
|
||||
include '../config/koneksi.php';
|
||||
|
||||
$user_id = $_SESSION['id'];
|
||||
|
||||
$cs = mysqli_fetch_assoc(
|
||||
mysqli_query(
|
||||
$conn,
|
||||
"SELECT * FROM cs_rumah_ibadah
|
||||
WHERE user_id='$user_id'"
|
||||
)
|
||||
);
|
||||
|
||||
$cs_id = $cs['id'];
|
||||
|
||||
/* TOTAL */
|
||||
|
||||
$total = mysqli_num_rows(
|
||||
|
||||
mysqli_query($conn,
|
||||
|
||||
"SELECT * FROM bantuan
|
||||
WHERE cs_id='$cs_id'")
|
||||
|
||||
);
|
||||
|
||||
/* PROSES */
|
||||
|
||||
$proses = mysqli_num_rows(
|
||||
|
||||
mysqli_query($conn,
|
||||
|
||||
"SELECT * FROM bantuan
|
||||
|
||||
WHERE cs_id='$cs_id'
|
||||
AND status='proses'")
|
||||
|
||||
);
|
||||
|
||||
/* SELESAI */
|
||||
|
||||
$selesai = mysqli_num_rows(
|
||||
|
||||
mysqli_query($conn,
|
||||
|
||||
"SELECT * FROM bantuan
|
||||
|
||||
WHERE cs_id='$cs_id'
|
||||
AND status='selesai'")
|
||||
|
||||
);
|
||||
|
||||
$persentase = 0;
|
||||
|
||||
if($total > 0){
|
||||
$persentase = round(($selesai / $total) * 100);
|
||||
}
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
|
||||
<title>Dashboard CS</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" />
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body class="bg-slate-100 min-h-screen">
|
||||
|
||||
<!-- NAVBAR -->
|
||||
<nav class="bg-slate-800 text-white shadow">
|
||||
|
||||
<div class="max-w-7xl mx-auto px-4 py-4 flex flex-col md:flex-row justify-between items-center gap-3">
|
||||
|
||||
<h2 class="font-bold text-xl">
|
||||
Dashboard CS
|
||||
</h2>
|
||||
|
||||
<div class="flex flex-col sm:flex-row items-center gap-3">
|
||||
|
||||
<span>
|
||||
Halo,
|
||||
<?= htmlspecialchars($_SESSION['nama']) ?>
|
||||
</span>
|
||||
|
||||
<a href="../logout.php" onclick="return confirm('Logout sekarang?')"
|
||||
class="bg-red-500 hover:bg-red-600 px-4 py-2 rounded-lg transition">
|
||||
|
||||
Logout
|
||||
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</nav>
|
||||
|
||||
<!-- CONTENT -->
|
||||
<div class="max-w-7xl mx-auto p-6">
|
||||
|
||||
<!-- HERO -->
|
||||
<div class="bg-gradient-to-r from-emerald-600 to-teal-600 text-white rounded-3xl p-8 shadow-lg">
|
||||
|
||||
<h1 class="text-3xl font-bold">
|
||||
Selamat Datang 👋
|
||||
<?= htmlspecialchars($_SESSION['nama']) ?>
|
||||
</h1>
|
||||
|
||||
<p class="mt-3 text-emerald-100">
|
||||
Kelola tugas bantuan sosial yang telah diberikan oleh admin.
|
||||
</p>
|
||||
|
||||
<div class="flex flex-col sm:flex-row gap-3 mt-6">
|
||||
|
||||
<a href="tugas.php"
|
||||
class="bg-white text-emerald-600 font-semibold px-6 py-3 rounded-xl shadow hover:shadow-lg transition">
|
||||
|
||||
<i class="fa-solid fa-list-check mr-2"></i>
|
||||
Lihat Tugas
|
||||
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- CARDS -->
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-6 mt-8">
|
||||
|
||||
<!-- Total -->
|
||||
<div class="bg-white rounded-2xl shadow p-6">
|
||||
|
||||
<i class="fa-solid fa-list text-4xl text-emerald-600"></i>
|
||||
|
||||
<p class="text-slate-500 mt-3">
|
||||
Total Tugas
|
||||
</p>
|
||||
|
||||
<h2 class="text-4xl font-bold">
|
||||
<?= $total ?>
|
||||
</h2>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Diproses -->
|
||||
<div class="bg-white rounded-2xl shadow p-6">
|
||||
|
||||
<i class="fa-solid fa-spinner animate-spin text-4xl text-blue-500"></i>
|
||||
|
||||
<p class="text-slate-500 mt-3">
|
||||
Diproses
|
||||
</p>
|
||||
|
||||
<h2 class="text-4xl font-bold">
|
||||
<?= $proses ?>
|
||||
</h2>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Selesai -->
|
||||
<div class="bg-white rounded-2xl shadow p-6">
|
||||
|
||||
<i class="fa-solid fa-circle-check text-4xl text-green-500"></i>
|
||||
|
||||
<p class="text-slate-500 mt-3">
|
||||
Selesai
|
||||
</p>
|
||||
|
||||
<h2 class="text-4xl font-bold">
|
||||
<?= $selesai ?>
|
||||
</h2>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="bg-white rounded-2xl shadow p-6 mt-8">
|
||||
|
||||
<h3 class="font-semibold text-slate-700">
|
||||
Progress Penyelesaian Bantuan
|
||||
</h3>
|
||||
|
||||
<div class="w-full bg-slate-200 rounded-full h-4 mt-4">
|
||||
|
||||
<div class="bg-green-500 h-4 rounded-full" style="width: <?= $persentase ?>%">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<p class="mt-3 text-slate-500">
|
||||
|
||||
<?= $persentase ?>% tugas bantuan telah selesai disalurkan
|
||||
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,106 @@
|
||||
<style>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
background: #f8fafc;
|
||||
font-family: 'Segoe UI', sans-serif;
|
||||
}
|
||||
|
||||
.content {
|
||||
padding: 30px;
|
||||
}
|
||||
|
||||
/* CARD */
|
||||
|
||||
.card {
|
||||
background: white;
|
||||
border-radius: 16px;
|
||||
padding: 25px;
|
||||
box-shadow:
|
||||
0 4px 20px rgba(0, 0, 0, .08);
|
||||
transition: .3s;
|
||||
}
|
||||
|
||||
.card:hover {
|
||||
transform: translateY(-5px);
|
||||
}
|
||||
|
||||
/* TABLE */
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
background: white;
|
||||
border-radius: 15px;
|
||||
overflow: hidden;
|
||||
box-shadow:
|
||||
0 4px 20px rgba(0, 0, 0, .08);
|
||||
}
|
||||
|
||||
th {
|
||||
background: #2563eb;
|
||||
color: white;
|
||||
}
|
||||
|
||||
th,
|
||||
td {
|
||||
padding: 14px;
|
||||
border-bottom: 1px solid #eee;
|
||||
}
|
||||
|
||||
/* BUTTON */
|
||||
|
||||
.btn {
|
||||
padding: 10px 16px;
|
||||
border-radius: 10px;
|
||||
text-decoration: none;
|
||||
color: white;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.approve {
|
||||
background: #16a34a;
|
||||
}
|
||||
|
||||
.reject {
|
||||
background: #dc2626;
|
||||
}
|
||||
|
||||
.delete {
|
||||
background: #64748b;
|
||||
}
|
||||
|
||||
.warning {
|
||||
background: #f59e0b;
|
||||
}
|
||||
|
||||
/* INPUT */
|
||||
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
|
||||
width: 100%;
|
||||
padding: 12px;
|
||||
|
||||
border: 1px solid #ddd;
|
||||
|
||||
border-radius: 10px;
|
||||
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
/* BOX */
|
||||
|
||||
.box {
|
||||
background: white;
|
||||
padding: 25px;
|
||||
border-radius: 20px;
|
||||
box-shadow:
|
||||
0 4px 20px rgba(0, 0, 0, .08);
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,158 @@
|
||||
<?php
|
||||
|
||||
session_start();
|
||||
|
||||
error_reporting(E_ALL);
|
||||
ini_set('display_errors', 1);
|
||||
|
||||
include '../config/koneksi.php';
|
||||
|
||||
if(!isset($_SESSION['role'])){
|
||||
header("Location: ../index.php");
|
||||
exit;
|
||||
}
|
||||
|
||||
if($_SESSION['role'] != 'cs'){
|
||||
header("Location: ../index.php");
|
||||
exit;
|
||||
}
|
||||
|
||||
$user_id = $_SESSION['id'];
|
||||
|
||||
$cs_query = mysqli_query(
|
||||
$conn,
|
||||
"SELECT * FROM cs_rumah_ibadah
|
||||
WHERE user_id='$user_id'"
|
||||
);
|
||||
|
||||
if(!$cs_query){
|
||||
die(mysqli_error($conn));
|
||||
}
|
||||
|
||||
$cs = mysqli_fetch_assoc($cs_query);
|
||||
|
||||
if(!$cs){
|
||||
die("Data CS tidak ditemukan");
|
||||
}
|
||||
|
||||
$cs_id = $cs['id'];
|
||||
|
||||
if(!isset($_POST['id'])){
|
||||
die("ID bantuan tidak ditemukan");
|
||||
}
|
||||
|
||||
$id = intval($_POST['id']);
|
||||
|
||||
if(
|
||||
!isset($_FILES['foto']) ||
|
||||
$_FILES['foto']['error'] != 0
|
||||
){
|
||||
die("Silakan pilih foto");
|
||||
}
|
||||
|
||||
$tmp = $_FILES['foto']['tmp_name'];
|
||||
$nama_asli = $_FILES['foto']['name'];
|
||||
|
||||
$ext = strtolower(
|
||||
pathinfo(
|
||||
$nama_asli,
|
||||
PATHINFO_EXTENSION
|
||||
)
|
||||
);
|
||||
|
||||
$allowed = [
|
||||
'jpg',
|
||||
'jpeg',
|
||||
'png',
|
||||
'webp'
|
||||
];
|
||||
|
||||
if(!in_array($ext,$allowed)){
|
||||
die("Format file tidak didukung");
|
||||
}
|
||||
|
||||
if(getimagesize($tmp) === false){
|
||||
die("File harus berupa gambar");
|
||||
}
|
||||
|
||||
$foto =
|
||||
time() . '_' .
|
||||
preg_replace(
|
||||
'/[^a-zA-Z0-9._-]/',
|
||||
'',
|
||||
basename($nama_asli)
|
||||
);
|
||||
|
||||
$cek_query = mysqli_query(
|
||||
$conn,
|
||||
"SELECT *
|
||||
FROM bantuan
|
||||
WHERE id='$id'
|
||||
AND cs_id='$cs_id'"
|
||||
);
|
||||
|
||||
if(!$cek_query){
|
||||
die(mysqli_error($conn));
|
||||
}
|
||||
|
||||
$cek = mysqli_fetch_assoc($cek_query);
|
||||
|
||||
if(!$cek){
|
||||
die("Akses ditolak");
|
||||
}
|
||||
|
||||
if(!is_dir("../assets/uploads")){
|
||||
mkdir("../assets/uploads",0777,true);
|
||||
}
|
||||
|
||||
if(
|
||||
!move_uploaded_file(
|
||||
$tmp,
|
||||
"../assets/uploads/".$foto
|
||||
)
|
||||
){
|
||||
die("Upload foto gagal");
|
||||
}
|
||||
|
||||
$update = mysqli_query(
|
||||
$conn,
|
||||
"UPDATE bantuan
|
||||
SET
|
||||
bukti_foto='$foto',
|
||||
status='selesai'
|
||||
WHERE id='$id'"
|
||||
);
|
||||
|
||||
if(!$update){
|
||||
die(mysqli_error($conn));
|
||||
}
|
||||
|
||||
$data_query = mysqli_query(
|
||||
$conn,
|
||||
"SELECT laporan_id
|
||||
FROM bantuan
|
||||
WHERE id='$id'"
|
||||
);
|
||||
|
||||
if(!$data_query){
|
||||
die(mysqli_error($conn));
|
||||
}
|
||||
|
||||
$data = mysqli_fetch_assoc($data_query);
|
||||
|
||||
if(!$data){
|
||||
die("Data bantuan tidak ditemukan");
|
||||
}
|
||||
|
||||
$laporan_id = $data['laporan_id'];
|
||||
|
||||
mysqli_query(
|
||||
$conn,
|
||||
"UPDATE laporan
|
||||
SET status='selesai'
|
||||
WHERE id='$laporan_id'"
|
||||
);
|
||||
|
||||
header("Location: tugas.php");
|
||||
exit;
|
||||
?>
|
||||
+249
@@ -0,0 +1,249 @@
|
||||
<?php
|
||||
|
||||
session_start();
|
||||
|
||||
if(!isset($_SESSION['role'])){
|
||||
|
||||
header("Location: ../index.php");
|
||||
exit;
|
||||
}
|
||||
|
||||
if($_SESSION['role'] != 'cs'){
|
||||
|
||||
header("Location: ../index.php");
|
||||
exit;
|
||||
}
|
||||
|
||||
include '../config/koneksi.php';
|
||||
|
||||
$user_id = $_SESSION['id'];
|
||||
|
||||
$cs = mysqli_fetch_assoc(
|
||||
|
||||
mysqli_query($conn,
|
||||
|
||||
"SELECT * FROM cs_rumah_ibadah
|
||||
WHERE user_id='$user_id'")
|
||||
|
||||
);
|
||||
|
||||
$cs_id = $cs['id'];
|
||||
|
||||
$data = mysqli_query($conn,
|
||||
|
||||
"SELECT bantuan.*,
|
||||
|
||||
laporan.nama_warga,
|
||||
laporan.alamat,
|
||||
laporan.latitude,
|
||||
laporan.longitude
|
||||
|
||||
FROM bantuan
|
||||
|
||||
JOIN laporan
|
||||
ON bantuan.laporan_id = laporan.id
|
||||
|
||||
WHERE bantuan.cs_id='$cs_id'
|
||||
|
||||
ORDER BY bantuan.id DESC"
|
||||
|
||||
);
|
||||
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
|
||||
<title>Tugas Bantuan</title>
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="bg-slate-100 min-h-screen">
|
||||
|
||||
<div class="max-w-7xl mx-auto p-6">
|
||||
|
||||
<!-- HEADER -->
|
||||
<div class="flex flex-col md:flex-row justify-between items-start md:items-center gap-4 mb-6">
|
||||
|
||||
<div>
|
||||
|
||||
<h1 class="text-3xl font-bold text-slate-800">
|
||||
Tugas Bantuan Saya
|
||||
</h1>
|
||||
|
||||
<p class="text-slate-500 mt-2">
|
||||
Daftar bantuan sosial yang harus disalurkan.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<a href="dashboard.php"
|
||||
class="bg-slate-800 hover:bg-slate-900 text-white px-5 py-3 rounded-xl shadow transition">
|
||||
|
||||
← Dashboard
|
||||
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- CARD -->
|
||||
<div class="bg-white rounded-3xl shadow-lg overflow-hidden">
|
||||
|
||||
<div class="overflow-x-auto">
|
||||
|
||||
<table class="min-w-full">
|
||||
|
||||
<thead>
|
||||
|
||||
<tr class="bg-emerald-600 text-white">
|
||||
|
||||
<th class="px-4 py-4 text-left">No</th>
|
||||
<th class="px-4 py-4 text-left">Nama Warga</th>
|
||||
<th class="px-4 py-4 text-left">Alamat</th>
|
||||
<th class="px-4 py-4 text-left">Lokasi</th>
|
||||
<th class="px-4 py-4 text-left">Jenis Bantuan</th>
|
||||
<th class="px-4 py-4 text-left">Status</th>
|
||||
<th class="px-4 py-4 text-left">Aksi</th>
|
||||
|
||||
</tr>
|
||||
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
|
||||
<?php
|
||||
|
||||
$no = 1;
|
||||
|
||||
if(mysqli_num_rows($data) == 0){
|
||||
?>
|
||||
|
||||
<tr>
|
||||
|
||||
<td colspan="7" class="text-center py-10 text-slate-500">
|
||||
|
||||
Belum ada tugas bantuan
|
||||
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
}
|
||||
|
||||
while($row = mysqli_fetch_assoc($data)){
|
||||
?>
|
||||
|
||||
<tr class="border-b hover:bg-slate-50 transition">
|
||||
|
||||
<td class="px-4 py-4">
|
||||
<?= $no++ ?>
|
||||
</td>
|
||||
|
||||
<td class="px-4 py-4 font-medium text-slate-800">
|
||||
<?= htmlspecialchars($row['nama_warga']) ?>
|
||||
</td>
|
||||
|
||||
<td class="px-4 py-4 text-slate-600">
|
||||
<?= htmlspecialchars($row['alamat']) ?>
|
||||
</td>
|
||||
|
||||
<td class="px-4 py-4">
|
||||
|
||||
<a target="_blank"
|
||||
href="https://www.google.com/maps?q=<?= $row['latitude'] ?>,<?= $row['longitude'] ?>"
|
||||
class="text-blue-600 hover:underline font-medium">
|
||||
|
||||
Lihat Lokasi
|
||||
|
||||
</a>
|
||||
|
||||
</td>
|
||||
|
||||
<td class="px-4 py-4">
|
||||
<?= htmlspecialchars($row['jenis_bantuan']) ?>
|
||||
</td>
|
||||
|
||||
<td class="px-4 py-4">
|
||||
|
||||
<?php if($row['status']=='proses'){ ?>
|
||||
|
||||
<span class="
|
||||
bg-amber-500
|
||||
text-white
|
||||
px-3 py-1
|
||||
rounded-full
|
||||
text-sm">
|
||||
|
||||
Diproses
|
||||
|
||||
</span>
|
||||
|
||||
<?php } ?>
|
||||
|
||||
<?php if($row['status']=='selesai'){ ?>
|
||||
|
||||
<span class="
|
||||
bg-green-600
|
||||
text-white
|
||||
px-3 py-1
|
||||
rounded-full
|
||||
text-sm">
|
||||
|
||||
Selesai
|
||||
|
||||
</span>
|
||||
|
||||
<?php } ?>
|
||||
|
||||
</td>
|
||||
|
||||
<td class="px-4 py-4">
|
||||
|
||||
<?php if($row['status']=='proses'){ ?>
|
||||
|
||||
<a href="upload_bukti.php?id=<?= $row['id'] ?>" class="
|
||||
bg-emerald-600
|
||||
hover:bg-emerald-700
|
||||
text-white
|
||||
px-4 py-2
|
||||
rounded-lg
|
||||
shadow
|
||||
transition">
|
||||
|
||||
Upload Bukti
|
||||
|
||||
</a>
|
||||
|
||||
<?php } else { ?>
|
||||
|
||||
<span class="text-green-600 font-semibold">
|
||||
|
||||
✓ Selesai
|
||||
|
||||
</span>
|
||||
|
||||
<?php } ?>
|
||||
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
<?php } ?>
|
||||
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,209 @@
|
||||
<?php
|
||||
|
||||
session_start();
|
||||
|
||||
if(!isset($_SESSION['role'])){
|
||||
|
||||
header("Location: ../index.php");
|
||||
exit;
|
||||
}
|
||||
|
||||
if($_SESSION['role'] != 'cs'){
|
||||
|
||||
header("Location: ../index.php");
|
||||
exit;
|
||||
}
|
||||
|
||||
include '../config/koneksi.php';
|
||||
|
||||
$user_id = $_SESSION['id'];
|
||||
|
||||
$cs = mysqli_fetch_assoc(
|
||||
mysqli_query(
|
||||
$conn,
|
||||
"SELECT * FROM cs_rumah_ibadah
|
||||
WHERE user_id='$user_id'"
|
||||
)
|
||||
);
|
||||
|
||||
if(!$cs){
|
||||
die("Data CS tidak ditemukan");
|
||||
}
|
||||
|
||||
$cs_id = $cs['id'];
|
||||
|
||||
$id = intval($_GET['id']);
|
||||
|
||||
$data = mysqli_fetch_assoc(
|
||||
|
||||
mysqli_query($conn,
|
||||
|
||||
"SELECT bantuan.*,
|
||||
|
||||
laporan.nama_warga,
|
||||
laporan.alamat
|
||||
|
||||
FROM bantuan
|
||||
|
||||
JOIN laporan
|
||||
ON bantuan.laporan_id = laporan.id
|
||||
|
||||
WHERE bantuan.id='$id'
|
||||
AND bantuan.cs_id='$cs_id'")
|
||||
);
|
||||
|
||||
if(!$data){
|
||||
die("Tugas tidak ditemukan");
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html>
|
||||
|
||||
<head>
|
||||
|
||||
|
||||
<title>Upload Bukti Bantuan</title>
|
||||
|
||||
<script src="https://cdn.tailwindcss.com"></script>
|
||||
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
|
||||
|
||||
|
||||
</head>
|
||||
|
||||
<body class="bg-gray-100 min-h-screen">
|
||||
|
||||
|
||||
<div class="max-w-4xl mx-auto p-6">
|
||||
|
||||
<a href="tugas.php"
|
||||
class="inline-flex items-center gap-2 px-4 py-2 bg-gray-700 hover:bg-gray-800 text-white rounded-xl mb-6 transition">
|
||||
|
||||
<i class="fas fa-arrow-left"></i>
|
||||
|
||||
Kembali
|
||||
|
||||
</a>
|
||||
|
||||
<div class="bg-white rounded-2xl shadow-lg overflow-hidden">
|
||||
|
||||
<div class="bg-green-600 text-white p-6">
|
||||
|
||||
<h1 class="text-2xl font-bold flex items-center gap-3">
|
||||
|
||||
<i class="fas fa-camera"></i>
|
||||
|
||||
Upload Bukti Bantuan
|
||||
|
||||
</h1>
|
||||
|
||||
<p class="mt-2 text-green-100">
|
||||
Upload dokumentasi penyaluran bantuan kepada warga.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="p-6">
|
||||
|
||||
<div class="grid md:grid-cols-2 gap-5 mb-6">
|
||||
|
||||
<div class="bg-gray-50 rounded-xl p-4">
|
||||
|
||||
<p class="text-gray-500 text-sm">
|
||||
Nama Warga
|
||||
</p>
|
||||
|
||||
<h3 class="font-semibold text-lg mt-1">
|
||||
<?= htmlspecialchars($data['nama_warga']) ?>
|
||||
</h3>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="bg-gray-50 rounded-xl p-4">
|
||||
|
||||
<p class="text-gray-500 text-sm">
|
||||
Alamat
|
||||
</p>
|
||||
|
||||
<h3 class="font-medium mt-1">
|
||||
<?= htmlspecialchars($data['alamat']) ?>
|
||||
</h3>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<form action="proses_upload.php" method="POST" enctype="multipart/form-data">
|
||||
|
||||
<input type="hidden" name="id" value="<?= $data['id'] ?>">
|
||||
|
||||
<div class="mb-5">
|
||||
|
||||
<label class="block text-sm font-medium text-gray-700 mb-2">
|
||||
|
||||
Foto Bukti Bantuan
|
||||
|
||||
</label>
|
||||
|
||||
<input type="file" id="foto" name="foto" accept="image/*" required
|
||||
class="w-full border rounded-xl p-3">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="mb-6">
|
||||
|
||||
<img id="preview" class="hidden w-full max-w-md h-64 object-cover rounded-xl border shadow">
|
||||
|
||||
</div>
|
||||
|
||||
<button type="submit"
|
||||
class="px-6 py-3 bg-green-600 hover:bg-green-700 text-white rounded-xl shadow transition">
|
||||
|
||||
<i class="fas fa-upload mr-2"></i>
|
||||
|
||||
Upload Bukti
|
||||
|
||||
</button>
|
||||
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
document
|
||||
.getElementById('foto')
|
||||
.addEventListener('change', function(e) {
|
||||
|
||||
const file = e.target.files[0];
|
||||
|
||||
if (!file) return;
|
||||
|
||||
const reader = new FileReader();
|
||||
|
||||
reader.onload = function(ev) {
|
||||
|
||||
const preview =
|
||||
document.getElementById('preview');
|
||||
|
||||
preview.src = ev.target.result;
|
||||
|
||||
preview.classList.remove('hidden');
|
||||
};
|
||||
|
||||
reader.readAsDataURL(file);
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user