180 lines
7.5 KiB
PHP
180 lines
7.5 KiB
PHP
<?php
|
|
require_once __DIR__ . '/layout_header.php';
|
|
|
|
$db = db();
|
|
$message = '';
|
|
|
|
// Handle Delete
|
|
if (isset($_GET['delete'])) {
|
|
$id = (int)$_GET['delete'];
|
|
$stmt = $db->prepare("DELETE FROM warga WHERE id = ?");
|
|
$stmt->execute([$id]);
|
|
$message = '<div class="alert alert-success">Data warga berhasil dihapus.</div>';
|
|
}
|
|
|
|
// Handle Add/Edit
|
|
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['save_warga'])) {
|
|
$id = $_POST['id'] ?? null;
|
|
$nama = $_POST['nama'];
|
|
$blok = $_POST['blok'];
|
|
$nomor_rumah = $_POST['nomor_rumah'];
|
|
$nik = $_POST['nik'];
|
|
$kk = $_POST['kk'];
|
|
$telepon = $_POST['telepon'];
|
|
$status = $_POST['status'] ?? 'aktif';
|
|
|
|
if ($id) {
|
|
$stmt = $db->prepare("UPDATE warga SET nama=?, blok=?, nomor_rumah=?, nik=?, kk=?, telepon=?, status=? WHERE id=?");
|
|
$stmt->execute([$nama, $blok, $nomor_rumah, $nik, $kk, $telepon, $status, $id]);
|
|
$message = '<div class="alert alert-success">Data warga berhasil diperbarui.</div>';
|
|
} else {
|
|
$stmt = $db->prepare("INSERT INTO warga (nama, blok, nomor_rumah, nik, kk, telepon, status) VALUES (?, ?, ?, ?, ?, ?, ?)");
|
|
$stmt->execute([$nama, $blok, $nomor_rumah, $nik, $kk, $telepon, $status]);
|
|
$message = '<div class="alert alert-success">Warga baru berhasil ditambahkan.</div>';
|
|
}
|
|
}
|
|
|
|
// Fetch all warga
|
|
$warga_list = $db->query("SELECT * FROM warga ORDER BY blok ASC, nomor_rumah ASC")->fetchAll();
|
|
?>
|
|
|
|
<div class="top-bar">
|
|
<h1 class="h3 fw-bold m-0">Manajemen Warga</h1>
|
|
<button class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#wargaModal" onclick="resetForm()">
|
|
<i class="bi bi-plus-lg"></i> Tambah Warga
|
|
</button>
|
|
</div>
|
|
|
|
<?= $message ?>
|
|
|
|
<div class="card">
|
|
<div class="table-responsive">
|
|
<table class="table table-hover align-middle">
|
|
<thead>
|
|
<tr>
|
|
<th>Nama</th>
|
|
<th>Blok/No</th>
|
|
<th>NIK / KK</th>
|
|
<th>Telepon</th>
|
|
<th>Status</th>
|
|
<th class="text-end">Aksi</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php foreach ($warga_list as $w): ?>
|
|
<tr>
|
|
<td>
|
|
<div class="fw-bold"><?= htmlspecialchars($w['nama']) ?></div>
|
|
</td>
|
|
<td><?= htmlspecialchars($w['blok']) ?> / <?= htmlspecialchars($w['nomor_rumah']) ?></td>
|
|
<td>
|
|
<div class="small">NIK: <?= htmlspecialchars($w['nik']) ?></div>
|
|
<div class="small text-muted">KK: <?= htmlspecialchars($w['kk']) ?></div>
|
|
</td>
|
|
<td><?= htmlspecialchars($w['telepon']) ?></td>
|
|
<td>
|
|
<span class="badge bg-<?= $w['status'] == 'aktif' ? 'success' : 'secondary' ?>">
|
|
<?= ucfirst($w['status']) ?>
|
|
</span>
|
|
</td>
|
|
<td class="text-end">
|
|
<button class="btn btn-sm btn-outline-primary me-1" onclick='editWarga(<?= json_encode($w) ?>)'>
|
|
<i class="bi bi-pencil"></i>
|
|
</button>
|
|
<a href="?delete=<?= $w['id'] ?>" class="btn btn-sm btn-outline-danger" onclick="return confirm('Yakin ingin menghapus?')">
|
|
<i class="bi bi-trash"></i>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
<?php endforeach; ?>
|
|
<?php if (empty($warga_list)): ?>
|
|
<tr>
|
|
<td colspan="6" class="text-center py-4 text-muted">Belum ada data warga.</td>
|
|
</tr>
|
|
<?php endif; ?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Modal -->
|
|
<div class="modal fade" id="wargaModal" tabindex="-1">
|
|
<div class="modal-dialog">
|
|
<form method="POST" class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title" id="modalTitle">Tambah Warga</h5>
|
|
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<input type="hidden" name="id" id="wargaId">
|
|
<div class="mb-3">
|
|
<label class="form-label">Nama Lengkap</label>
|
|
<input type="text" name="nama" id="wargaNama" class="form-control" required>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-md-6 mb-3">
|
|
<label class="form-label">Blok</label>
|
|
<input type="text" name="blok" id="wargaBlok" class="form-control" required>
|
|
</div>
|
|
<div class="col-md-6 mb-3">
|
|
<label class="form-label">Nomor Rumah</label>
|
|
<input type="text" name="nomor_rumah" id="wargaNomor" class="form-control" required>
|
|
</div>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label class="form-label">NIK</label>
|
|
<input type="text" name="nik" id="wargaNIK" class="form-control">
|
|
</div>
|
|
<div class="mb-3">
|
|
<label class="form-label">Nomor KK</label>
|
|
<input type="text" name="kk" id="wargaKK" class="form-control">
|
|
</div>
|
|
<div class="mb-3">
|
|
<label class="form-label">Telepon</label>
|
|
<input type="text" name="telepon" id="wargaTelepon" class="form-control">
|
|
</div>
|
|
<div class="mb-3">
|
|
<label class="form-label">Status</label>
|
|
<select name="status" id="wargaStatus" class="form-select">
|
|
<option value="aktif">Aktif</option>
|
|
<option value="non-aktif">Non-Aktif</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Batal</button>
|
|
<button type="submit" name="save_warga" class="btn btn-primary">Simpan</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
function editWarga(warga) {
|
|
document.getElementById('modalTitle').innerText = 'Edit Warga';
|
|
document.getElementById('wargaId').value = warga.id;
|
|
document.getElementById('wargaNama').value = warga.nama;
|
|
document.getElementById('wargaBlok').value = warga.blok;
|
|
document.getElementById('wargaNomor').value = warga.nomor_rumah;
|
|
document.getElementById('wargaNIK').value = warga.nik;
|
|
document.getElementById('wargaKK').value = warga.kk;
|
|
document.getElementById('wargaTelepon').value = warga.telepon;
|
|
document.getElementById('wargaStatus').value = warga.status;
|
|
new bootstrap.Modal(document.getElementById('wargaModal')).show();
|
|
}
|
|
|
|
function resetForm() {
|
|
document.getElementById('modalTitle').innerText = 'Tambah Warga';
|
|
document.getElementById('wargaId').value = '';
|
|
document.getElementById('wargaNama').value = '';
|
|
document.getElementById('wargaBlok').value = '';
|
|
document.getElementById('wargaNomor').value = '';
|
|
document.getElementById('wargaNIK').value = '';
|
|
document.getElementById('wargaKK').value = '';
|
|
document.getElementById('wargaTelepon').value = '';
|
|
document.getElementById('wargaStatus').value = 'aktif';
|
|
}
|
|
</script>
|
|
|
|
<?php require_once __DIR__ . '/layout_footer.php'; ?>
|