MINI
C:
/
siak
/
app
/
ktpel
/
Upload File:
files >> C:/siak/app/ktpel/detail.php
```php <?php require_once __DIR__ . '/app/person.php'; /* |-------------------------------------------------------------------------- | Helper escape HTML |-------------------------------------------------------------------------- */ function e($value) { return htmlspecialchars( isset($value) ? $value : '', ENT_QUOTES, 'UTF-8' ); } /* |-------------------------------------------------------------------------- | NIK |-------------------------------------------------------------------------- */ $nik = isset($_GET['nik']) ? trim($_GET['nik']) : ''; /* |-------------------------------------------------------------------------- | Validasi NIK |-------------------------------------------------------------------------- */ if ($nik === '') { die('NIK tidak diberikan.'); } /* |-------------------------------------------------------------------------- | PROSES TAMBAH / EDIT NOMOR HP |-------------------------------------------------------------------------- */ $phone_message = ''; $phone_error = ''; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $action = isset($_POST['action']) ? $_POST['action'] : ''; $post_nik = isset($_POST['nik']) ? trim($_POST['nik']) : ''; /* * Pastikan NIK yang diproses sama dengan halaman */ if ($post_nik !== $nik) { $phone_error = 'NIK tidak valid.'; } elseif ($action === 'update_phone') { $phone = isset($_POST['phone']) ? trim($_POST['phone']) : ''; $result_phone = update_phone( $post_nik, $phone ); if ($result_phone['ok']) { $phone_message = $result_phone['message']; } else { $phone_error = $result_phone['error']; } } elseif ($action === 'delete_phone') { $result_phone = delete_phone($post_nik); if ($result_phone['ok']) { $phone_message = $result_phone['message']; } else { $phone_error = $result_phone['error']; } } } /* |-------------------------------------------------------------------------- | Ambil data penduduk |-------------------------------------------------------------------------- */ $result = find_person($nik); if (!$result['ok']) { die(e($result['error'])); } $p = $result['data']; /* |-------------------------------------------------------------------------- | Data No HP |-------------------------------------------------------------------------- */ $sms_phone = isset($p['SMS_PHONE']) ? trim($p['SMS_PHONE']) : ''; ?> <!DOCTYPE html> <html lang="id"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0" > <title> Detail Data Penduduk - <?= e($p['NAMA_LGKP']) ?> </title> <style> * { box-sizing: border-box; } body { margin: 0; padding: 0; background: #f3f6f9; font-family: Arial, Helvetica, sans-serif; color: #212529; } .container { width: 95%; max-width: 1200px; margin: 25px auto; } .header { background: #0d6efd; color: #fff; padding: 22px; border-radius: 12px 12px 0 0; } .header h1 { margin: 0; font-size: 25px; } .header p { margin: 7px 0 0; opacity: .9; } .card { background: #fff; border-radius: 0 0 12px 12px; box-shadow: 0 4px 18px rgba(0, 0, 0, .08); padding: 22px; } .section { margin-bottom: 25px; } .section-title { background: #f1f5f9; border-left: 5px solid #0d6efd; padding: 11px 14px; font-weight: bold; margin-bottom: 15px; border-radius: 5px; } .grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 25px; } .item { border-bottom: 1px solid #eee; padding: 9px 0; } .label { display: block; font-size: 12px; color: #6c757d; margin-bottom: 4px; } .value { font-size: 15px; font-weight: 500; word-break: break-word; } .phone-box { border: 1px solid #dce3ea; border-radius: 10px; padding: 18px; background: #fafcff; } .phone-number { font-size: 22px; font-weight: bold; color: #198754; margin-bottom: 15px; word-break: break-word; } .phone-empty { font-size: 16px; color: #6c757d; margin-bottom: 15px; } .btn { display: inline-block; border: 0; border-radius: 7px; padding: 10px 16px; cursor: pointer; text-decoration: none; font-size: 14px; font-weight: bold; } .btn-primary { background: #0d6efd; color: #fff; } .btn-success { background: #198754; color: #fff; } .btn-danger { background: #dc3545; color: #fff; } .btn-secondary { background: #6c757d; color: #fff; } .btn:hover { opacity: .9; } .button-row { display: flex; gap: 8px; flex-wrap: wrap; } .alert { padding: 13px 16px; border-radius: 7px; margin-bottom: 18px; } .alert-success { background: #d1e7dd; color: #0f5132; } .alert-danger { background: #f8d7da; color: #842029; } .modal { display: none; position: fixed; z-index: 9999; left: 0; top: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, .55); padding: 20px; } .modal-content { background: #fff; max-width: 450px; margin: 8% auto; border-radius: 12px; overflow: hidden; box-shadow: 0 10px 40px rgba(0, 0, 0, .25); } .modal-header { background: #0d6efd; color: #fff; padding: 17px 20px; display: flex; justify-content: space-between; align-items: center; } .modal-header h3 { margin: 0; font-size: 18px; } .modal-close { border: 0; background: transparent; color: #fff; font-size: 25px; cursor: pointer; } .modal-body { padding: 20px; } .form-group { margin-bottom: 17px; } .form-label { display: block; margin-bottom: 7px; font-weight: bold; font-size: 14px; } .form-control { width: 100%; padding: 12px; border: 1px solid #ced4da; border-radius: 7px; font-size: 16px; outline: none; } .form-control:focus { border-color: #86b7fe; box-shadow: 0 0 0 3px rgba(13, 110, 253, .15); } .modal-footer { padding: 15px 20px; background: #f8f9fa; display: flex; justify-content: flex-end; gap: 8px; } .info { font-size: 12px; color: #6c757d; margin-top: 6px; } .back { margin-bottom: 15px; } @media (max-width: 700px) { .container { width: 100%; margin: 0; } .header { border-radius: 0; padding: 18px; } .card { border-radius: 0; padding: 15px; } .grid { grid-template-columns: 1fr; gap: 5px; } .modal { padding: 10px; } .modal-content { margin: 15% auto; } .phone-number { font-size: 19px; } } </style> </head> <body> <div class="container"> <div class="back"> <button type="button" class="btn btn-secondary" onclick="history.back()" > ← Kembali </button> </div> <div class="header"> <h1> DATA PENDUDUK </h1> <p> Detail data berdasarkan NIK </p> </div> <div class="card"> <?php if ($phone_message !== ''): ?> <div class="alert alert-success"> ✓ <?= e($phone_message) ?> </div> <?php endif; ?> <?php if ($phone_error !== ''): ?> <div class="alert alert-danger"> ✕ <?= e($phone_error) ?> </div> <?php endif; ?> <!-- ================================================== DATA INDIVIDU =================================================== --> <div class="section"> <div class="section-title"> DATA INDIVIDU </div> <div class="grid"> <div class="item"> <span class="label">NIK</span> <span class="value"> <?= e($p['NIK']) ?> </span> </div> <div class="item"> <span class="label">NO. KK</span> <span class="value"> <?= e($p['NO_KK']) ?> </span> </div> <div class="item"> <span class="label">Nama Lengkap</span> <span class="value"> <?= e($p['NAMA_LGKP']) ?> </span> </div> <div class="item"> <span class="label">Jenis Kelamin</span> <span class="value"> <?= e($p['JENIS_KLMIN']) ?> </span> </div> <div class="item"> <span class="label">Tempat Lahir</span> <span class="value"> <?= e($p['TMPT_LHR']) ?> </span> </div> <div class="item"> <span class="label">Tanggal Lahir</span> <span class="value"> <?= e($p['TGL_LHR']) ?> </span> </div> <div class="item"> <span class="label">Golongan Darah</span> <span class="value"> <?= e($p['GOL_DRH']) ?> </span> </div> <div class="item"> <span class="label">Agama</span> <span class="value"> <?= e($p['AGAMA']) ?> </span> </div> <div class="item"> <span class="label">Status Perkawinan</span> <span class="value"> <?= e($p['STAT_KWN']) ?> </span> </div> <div class="item"> <span class="label">Pendidikan</span> <span class="value"> <?= e($p['PDDK_AKH']) ?> </span> </div> <div class="item"> <span class="label">Jenis Pekerjaan</span> <span class="value"> <?= e($p['JENIS_PKRJN']) ?> </span> </div> <div class="item"> <span class="label">Status Hubungan Keluarga</span> <span class="value"> <?= e($p['STAT_HBKEL']) ?> </span> </div> </div> </div> <!-- ================================================== NOMOR HANDPHONE =================================================== --> <div class="section"> <div class="section-title"> 📱 NOMOR HANDPHONE </div> <div class="phone-box"> <?php if ($sms_phone !== ''): ?> <div class="phone-number"> <?= e($sms_phone) ?> </div> <div class="button-row"> <button type="button" class="btn btn-primary" onclick="openPhoneModal()" > ✏️ Edit No. HP </button> <form method="post" style="display:inline;" onsubmit=" return confirm( 'Yakin ingin mengosongkan nomor handphone ini?' ); " > <input type="hidden" name="action" value="delete_phone" > <input type="hidden" name="nik" value="<?= e($nik) ?>" > <button type="submit" class="btn btn-danger" > 🗑️ Hapus </button> </form> </div> <?php else: ?> <div class="phone-empty"> Belum ada nomor handphone. </div> <button type="button" class="btn btn-success" onclick="openPhoneModal()" > + Tambah No. HP </button> <?php endif; ?> </div> </div> <!-- ================================================== DATA KELUARGA =================================================== --> <div class="section"> <div class="section-title"> DATA KELUARGA </div> <div class="grid"> <div class="item"> <span class="label">Kepala Keluarga</span> <span class="value"> <?= e($p['NAMA_KEP']) ?> </span> </div> <div class="item"> <span class="label">NIK Kepala Keluarga</span> <span class="value"> <?= e($p['NIK_KK']) ?> </span> </div> <div class="item"> <span class="label">Alamat</span> <span class="value"> <?= e($p['ALAMAT']) ?> </span> </div> <div class="item"> <span class="label">RT</span> <span class="value"> <?= e($p['NO_RT']) ?> </span> </div> <div class="item"> <span class="label">RW</span> <span class="value"> <?= e($p['NO_RW']) ?> </span> </div> <div class="item"> <span class="label">Dusun</span> <span class="value"> <?= e($p['DUSUN']) ?> </span> </div> <div class="item"> <span class="label">Kode Pos</span> <span class="value"> <?= e($p['KODE_POS']) ?> </span> </div> <div class="item"> <span class="label">Telepon Keluarga</span> <span class="value"> <?= e($p['TELP']) ?> </span> </div> </div> </div> <!-- ================================================== DATA ORANG TUA =================================================== --> <div class="section"> <div class="section-title"> DATA ORANG TUA </div> <div class="grid"> <div class="item"> <span class="label">NIK Ibu</span> <span class="value"> <?= e($p['NIK_IBU']) ?> </span> </div> <div class="item"> <span class="label">Nama Ibu</span> <span class="value"> <?= e($p['NAMA_LGKP_IBU']) ?> </span> </div> <div class="item"> <span class="label">NIK Ayah</span> <span class="value"> <?= e($p['NIK_AYAH']) ?> </span> </div> <div class="item"> <span class="label">Nama Ayah</span> <span class="value"> <?= e($p['NAMA_LGKP_AYAH']) ?> </span> </div> </div> </div> <!-- ================================================== DATA KTP =================================================== --> <div class="section"> <div class="section-title"> DATA KTP </div> <div class="grid"> <div class="item"> <span class="label">No. KTP</span> <span class="value"> <?= e($p['NO_KTP']) ?> </span> </div> <div class="item"> <span class="label">Status KTP</span> <span class="value"> <?= e($p['STAT_KTP']) ?> </span> </div> <div class="item"> <span class="label">Status e-KTP</span> <span class="value"> <?= e($p['EKTP_CURRENT_STATUS_CODE']) ?> </span> </div> <div class="item"> <span class="label">Tanggal Cetak KTP</span> <span class="value"> <?= e($p['TGL_CETAK_KTP']) ?> </span> </div> <div class="item"> <span class="label">Tanggal Ganti KTP</span> <span class="value"> <?= e($p['TGL_GANTI_KTP']) ?> </span> </div> <div class="item"> <span class="label">Tanggal Perpanjangan KTP</span> <span class="value"> <?= e($p['TGL_PJG_KTP']) ?> </span> </div> </div> </div> </div> </div> <!-- ======================================================== MODAL TAMBAH / EDIT NO HP ========================================================= --> <div id="phoneModal" class="modal" > <div class="modal-content"> <div class="modal-header"> <h3> 📱 <?= $sms_phone !== '' ? 'Edit Nomor Handphone' : 'Tambah Nomor Handphone' ?> </h3> <button type="button" class="modal-close" onclick="closePhoneModal()" > × </button> </div> <form method="post" onsubmit="return validatePhone();" > <div class="modal-body"> <input type="hidden" name="action" value="update_phone" > <input type="hidden" name="nik" value="<?= e($nik) ?>" > <div class="form-group"> <label class="form-label"> NIK </label> <input type="text" class="form-control" value="<?= e($nik) ?>" readonly > </div> <div class="form-group"> <label class="form-label" for="phone" > Nomor Handphone </label> <input type="tel" id="phone" name="phone" class="form-control" value="<?= e($sms_phone) ?>" placeholder="Contoh: 081234567890" inputmode="numeric" autocomplete="tel" maxlength="15" > <div class="info"> Masukkan nomor 10 sampai 15 digit. </div> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" onclick="closePhoneModal()" > Batal </button> <button type="submit" class="btn btn-success" > 💾 Simpan </button> </div> </form> </div> </div> <script> /* |-------------------------------------------------------------------------- | Buka modal |-------------------------------------------------------------------------- */ function openPhoneModal() { var modal = document.getElementById('phoneModal'); modal.style.display = 'block'; setTimeout(function () { var phone = document.getElementById('phone'); if (phone) { phone.focus(); phone.select(); } }, 100); } /* |-------------------------------------------------------------------------- | Tutup modal |-------------------------------------------------------------------------- */ function closePhoneModal() { document.getElementById('phoneModal').style.display = 'none'; } /* |-------------------------------------------------------------------------- | Klik area luar modal |-------------------------------------------------------------------------- */ window.onclick = function(event) { var modal = document.getElementById('phoneModal'); if (event.target === modal) { closePhoneModal(); } }; /* |-------------------------------------------------------------------------- | Validasi nomor HP |-------------------------------------------------------------------------- */ function validatePhone() { var phone = document.getElementById('phone').value.trim(); /* * Hanya angka */ phone = phone.replace(/[^0-9]/g, ''); if (phone === '') { alert( 'Nomor handphone harus diisi.' ); return false; } if (phone.length < 10 || phone.length > 15) { alert( 'Nomor handphone harus 10 sampai 15 digit.' ); return false; } /* * Masukkan kembali nomor yang sudah dibersihkan */ document.getElementById('phone').value = phone; return true; } </script> </body> </html> ```
Copyright ©2021 || Defacer Indonesia