⚝
One Hat Cyber Team
⚝
Your IP:
192.168.31.6
Server IP:
192.168.1.11
Server:
Linux pams 6.1.0-29-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.123-1 (2025-01-02) x86_64
PHP Version:
8.2.28
Buat File
|
Buat Folder
Upload File
Eksekusi
Dir :
~
/
var
/
www
/
pusaka
/
modules
/
Absen
/
Controllers
/
Edit File: Absen.php
<?php namespace Modules\Absen\Controllers; use App\Controllers\BaseController; use Ramsey\Uuid\Uuid; class Absen extends BaseController { public function index() { $data['title'] = 'Absen'; $data['li_1'] = 'Daftar Absen'; $data['body'] = 'Modules\Absen\Views\list.php'; $data['table'] = $this->db->table('absen') ->select("TO_CHAR(absen.tgl, 'DD Month YYYY HH24:MI:SS') AS tanggal, mhs.*") ->join('mhs', 'absen.id_mhs = mhs.id') ->get()->getResult(); return view('template', $data); } public function form(){ $data['mhs'] = $this->db->table('mhs') ->limit(10) ->get()->getResult(); return view('Modules\Absen\Views\form.php', $data); } public function find(){ $builder = $this->db->table('mhs'); // Header untuk memastikan respons berupa JSON header('Content-Type: application/json'); $keyword = $this->request->getGet('term'); // Keyword pencarian (dari Select2 'term') $page = $this->request->getGet('page') ? (int)$this->request->getGet('page') : 1; // Halaman (dari Select2 'page') // 3. Batasan dan Offset $limit = 20; // Batasi hasilnya menjadi 20 baris per permintaan $offset = ($page - 1) * $limit; $totalBuilder = $this->db->table('mhs') ->like('nim', $keyword, 'both') ->orLike('nama', $keyword, 'both'); $total_count = $totalBuilder->countAllResults(); // 5. Query Data Mahasiswa // CI4 Query Builder: Mengambil data dengan limit dan offset $dataMhs = $builder ->select('id, nim, nama') ->like('nim', $keyword, 'both') // Pencarian pada kolom nim ->orLike('nama', $keyword, 'both') // Pencarian pada kolom nama ->limit($limit, $offset) ->get() ->getResultArray(); // Ambil hasilnya sebagai array // 6. Format Data untuk Select2 $results = []; foreach ($dataMhs as $mhs) { $results[] = [ 'id' => $mhs['id'], 'text' => $mhs['nim'] . ' - ' . $mhs['nama'] ]; } // 7. Cek Pagination // Cek apakah masih ada data di halaman berikutnya $more = ($total_count > ($page * $limit)); // 8. Kirim Respons JSON $response = [ 'results' => $results, 'pagination' => [ 'more' => $more ], 'total_count' => $total_count // Data tambahan untuk debugging ]; return $this->response->setJSON($response); } public function add(){ $p = $this->request->getPost(); if (!$this->request->is('post')) { session()->setFlashData(gagal('Akses Ditolak')); return redirect()->back(); } $rules = [ 'id_mhs' => [ 'rules' => 'required', 'errors' => [ 'required' => 'Mahasiswa wajib dipilih.', ] ], ]; if (!$this->validate($rules)) { // Jika validasi GAGAL: // Mengembalikan input yang sudah diisi dan error ke halaman sebelumnya. session()->setFlashData(gagal('Pilih NIM Dulu')); return redirect()->back(); } $db = $this->db->table('mhs'); $dt = $db->where('id', $p['id_mhs'])->get()->getRow(); if(!isset($dt->id)){ session()->setFlashData(gagal('NIM Tidak Ditemukan')); return redirect()->back(); } $id = Uuid::uuid4()->toString(); $input = [ 'id' => $id, 'id_mhs' => $dt->id, 'nama' => $dt->nama, 'status' => 'mhs', 'tgl' => date('Y-m-d H:i:s') ]; $this->db->table('absen')->insert($input); session()->setFlashData(success('Absen Berhasil, Terima Kasih......')); return redirect()->back(); } }
Simpan