Pembahasan Soal UKK SPP – Halo teman teman calon programmers, disini saya akan
membahas tentang UJI KOMPETENSI KEAHLIAN REKAYASA PERANGKAT LUNAK PAKET
1 SEKOLAH MENENGAH KEJURUAN Tentang Aplikasi Pembayaran SPP. Saya harap teman
teman mengikuti semua bagian dari seri ini, karena nantinya kemungkinan akan ada ±10 Bagian
dan semoga teman teman bisa memahaminya, jika tidak paham silahkan tanyakan di kolom
Komentar. Silahkan bagi yang memiliki hard file dari Paket 1 ini dibuka dan dibaca terlebih
dahulu yaa. Dan jika tidak ada hard file nya, teman teman bisa dapatkan soft file nya disini.
Silahkan dibuka hard file nya, kita akan bahas secara detail tugas ini ya.
Tools tools lainnya seperti Text Editor atau Web Server kalian bebas menggunakan apa saja.
Saya sarankan teman teman menggunakan Text Editor Notepad++ dan untuk Web
Server teman teman bisa pakai XAMPP. Jadi silahkan kalian sediakan terlebih dahulu.
Mari kita lihat terlebih dahulu fitur fitur apa saja yang harus ada di Aplikasi Pembayaran SPP ini.
Login √ √ √
Logout √ √ √
Generate Laporan √
Keterangan:
Seperti yang kita lihat fitur fitur yang ada pada table tersebut menggunakan
pembagian privilege / Tingkatan User atau kita sebet Level. Level yang akan kita buat adalah
Level Administrator dan Petugas yang akan kita berikan username dan password untuk login ke
aplikasi.
Lanjutkan ke Bagian IV. Disana ada struktur database berikut relasi yang akan teman teman
buat.
Relasi tabel
Silahkan teman teman boleh buat database nya sekarang. Buat database dengan
nama latihan_ukk Setiap relasi beri Primary Key(Kunci Utama) karena nanti kita akan
membuat relasi One To Many(Satu ke Banyak).
Pertamatama, teman teman Jalankan terlebih dahulu XAMPPnya atau Web Server yang kalian
gunakan setelah itu buka Editor kalian, entah itu Notepad++, Visual Studio Code, Atom, Sublime
Text dkk. Tampilan yang akan kita buat ini sederhana saja ya tanpa ada CSS atau JS, untuk itu
teman teman coba hias sesuka kalian. Nanti tampilannya seperti ini :
Tampilan login
1. Jika Sudah dibuka Editornya, kita akan buat koneksi ke database nya terlebih dahulu yaa.
2. Selanjutnya kita akan buat halaman login nya.
Coding login
Coding index
Baris pertama coding yang kita buat adalah session_start(); karena kita menggunakan system
sesi yaa. Lalu baris kedua kita memanggil database, karena nanti halaman utama ini akan
berinteraksi dengan database. Setelah itu kita menyisipkan sebuah baris kondisi, jika sesi belum
dibuat if(!isset($_SESSION[‘username’])) maka nanti akan dikembalikan kehalaman login
dengan perintah header(“location: login.php”);. Dan jika selain dari itu kita buat variable
dengan nilai sesi login username, karena kita akan mengambil data dari username.
Sudah bisa login ya teman teman, coba perharikan url nya sedang berada pada halaman
index.php .
Index/Halaman utama ini kita buat sederhana saja sebagai percobaan apakah login nya sudah
berjalan dengan benar atau tidak. Selanjutnya nanti akan kita perbaiki halaman utama ini
Sudah dulu ya. Post selanjutnya kita akan membuat menu yang ada pada halaman index tadi,
dan akan kita sisipkan sebuah statement kondisi jika level admin > maka menu yang dapat
diakses apa saja dan jika level petugas > yang dapat diakses apa saja dan jika siswa maka akan
seperti apa.
Kita menempatkan sebuah struktur html biasa, seperti title dan body. Dibagian body kita memiliki
script PHP yaitu <?php require_once(“header.php”); ?> Fungsinya sebagai pemanggilan
file header.php yang nantinya kita akan isi berupa Site Title / Judul Aplikasi Kita dan Menu
Navigasi. Selanjutnya kita menambahkan Kata Selamat datang kepada seorang petugas dan
pesan “Silahkan dikelola dengan baik”. Bagian selanjut nya juga kita memannggil sebuah
file footer.php, untuk bagian terbawah dari aplikasi kita.
Seperti yang saya terangkan sebelumnya, kita akan membuat sebuah logika. Jika Levelnya
Admin maka menu apa saja yang dapat di akses dan jika levelnya petugas level apa saja yang
dapat diakses. Caranya kita pakai statement if($hasil[‘level’] == “Administrator”){ Ini artinya,
jika data yang kita panggil dari username levelnya adalah Administrator maka nanti menu yang
akan tampil diantaranya seperti Data Siswa, Data Petugas, Data Kelas, Data SPP, Transaksi,
History Pembayaran dan LogOut. Begitupun jika levelnya petugas maka yang tampil hanya
menu Transaksi History, Pembayaran dan LogOut. Seluruh menu tersebut berdasarkan
Soal/Tugas yang sudah dibahas ya teman teman. Untuk Level siswa, nanti kita akan buat secara
terpisah.
Coding footer
Dan Apabila nanti Levelnya adalah Petugas maka akan tampil seperti ini
Bagaimana teman teman? apakah terjadi error pada coding kalian? Jika ada pertanyaan
silahkan teman teman boleh comment dibawah
Seluruh table yang kita tampilkan ini merupakan data yang ada pada table. Karena kita akan
membuat CRUD dari Data Siswa, Maka kita akan mengambil data dari table siswa. Sebelum
mengisi konten konten kita, saya minta teman teman tambahkan 2 data ke seluruh table kita
yang ada di databasenya karena kita akan melakukan testing apa data terpanggil atau tidak.
Sekarang kita mulai ngodingnya, teman teman jalankan terlebih dahulu Web Server nya dan
teman teman buka code editornya
Coding Require
require_once(“require.php”);
?>
Lalu di bagian body, kita memanggil file header.php kita yang berisi menu navigasi dan juga
pada bagian terbawah kita memanggil footer.php. Nantinya ini akan kita pakai disetiap konten
kita ya
Kemudian kita membuat sebuah table yang nantinya ini akan kita isikan data menurut seluruh
data yang ada pada table Siswa
Table yang kita buat berisikan 8 Kolom. Dan nantinya juga kita akan melakukan join table yahh.
Apa sih join itu? Join itu merupakan query MySQLi yang berfungsi untuk menggabungkan table
yang telah kita relasi ke table siswa ini. Table apa yang kita relasikan? Jelas Table kelas dengan
nama Field nya adalah id_kelas. Karena kita tidak mungkin menampilkan sebuah ID kedalam
table kita, jadi nanti kita akan menampilkan Nama Kelas dan Kompetensi Kejuruan yang
terhubung dengan ID.
Di dalam tampilan tersebut kita membuat 3 aksi yaitu Tambah data yang ada pada atas table,
Hapus dan Edit yang berada pada kolom table kita. Nanti kita akan fungsikan seluruh aksi
tersebut. Pertama kita buat aksi hapus data, yang kita simpan scriptnya di paling bawah
Link hapus
Link yang kita buat ini mengirimkan NISN dari data yang akan kita hapus
Kemudian kita menangkap data yang dikirimkan tersebut kedalam variable. Lalu kita langsung
hapus data tersebut dari table
Proses hapus
Jika data berhasil dihapus maka akan diarahkan ke halaman siswa.php. Tetapi jika gagal kita
buatkan sebuah javascript sederhana yang menampilkan ‘Maaf, data tersebut masih terhubung
dengan data yang lain.
Kita membuat form input sederhana untuk menambah data siswa. Perhatikan pada bagian
kelasnya, Karena id_kelas yang ada pada table siswa itu terhubung dengan id_kelas pada table
kelas, jadi yang akan kita lakukan memilih data dari table kelas. Tapi disetiap option kita beri nilai
id_kelas.
Option Kelas
Perhatikan dibaris awal. Kita menangkap data NISN dari url yang dikirimkan oleh halaman
siswa.php. Lalu kita ambil data dari database berdasarkan NISN yang kita tangkap
NISN yang telah kita tangkap akan dimasukkan kedalam form input dan akan kita
sembunyikan. Karena NISN ini sebagai acuan untuk data yang akan kita ubah. Ini sama saja yaa
dengan kita menghapus data.
Silahkan teman teman jalankan Web Server kalian dan Buka Code Editornya. Jika sudah
dijalankan semua, saya minta teman teman ketikkan script dibawah ini. Tampilan yang akan kita
buat kurang lebih akan seperti ini ya teman teman.
Tampilan Entry Transaksi
Jadi tampilannya ini berisi seluruh data yang ada pada table pembayaran kita
Kenapa kita tidak menampilkan id_petugas, nisn, dan id_spp ? Karena menurut saya ketiga field
ini seharusnya tidak kita tampilkan tapi nanti kita akan mengambil data dari table lain dengan
memanfaatkan relasi yang kita buat pada database. Jadi intinya id_petugas ini yang akan tampil
adalah nama dari si petugas nya bukan id nya, nisn juga nanti yang akan kita tampilkan adalah
nama dari nisn yang digunakan, begitupun sama dengan id_spp yang akan kita tampilkan nanti
Tahun SPP berikut dengan Nominal yang harus dibayar.
Table Pembayaran
Tampilan ini mengikuti data data yang ada pada table Pembayaran, dan seperti yang kita
ketahui di dalam table tersebut terdapat relasi ke table lain seperti table petugas, siswa, dan spp
jadi nanti yang akan kita lakukan adalah Join ketiga table tersebut ke table pembayaran.
Kemudian kita menampilkannya menggunakan sebuah perulangan while dengan kondisi
menangkap seluruh data yang ada pada table Pembayaran. Kita juga menempatkan statement
pengkondisian yang berfungsi jika Nominal yang Harus dibayar itu sama dengan Jumlah yang
dibayarkan, script nya seperti ini ($r['jumlah_bayar'] == $r['nominal']){ Jika kondisi nya
bernilai true maka Status yang akan tampil adalah LUNAS selain itu pastinya akan
tampil BELUM LUNAS. Terus juga ada kondisi dimana jika Jumlah yang dibayarkan ini belum
lunas maka akan terdapat sebuah tombol untuk mengupdate jumlah bayar tersebut bilamana
siswa sudah membayar kekurangannya, update data tersebut kita lakukan dengan request
method GET seperti pada dan proses nya seperti ini.
Proses pelunasan sisa pembayaran
Pertama, kita ambil data id_pembayaran melalui request method GET yang dikirimkan. Kurang
lebih ada pada bagian ini
Selanjutnya kita proses data yang dikirimkan tersebut. Kita ambil data pembayaran berdasarkan
id yang kita kirimkan tadi. Selanjutnya kita cari tau dulu Sisa yang harus dibayarkan dengan cara
Masih dengan menu navigasi yang sama dan juga footer yang sama.
Sekarang teman teman jalankan terlebih dahulu Web Server dan Code Editor kalian.
Seperti biasa di setiap konten kita terdapat file require.php untuk menyimpan sesi.
require_once("require.php");
?>
Lalu dibagian body kita membuat form input untuk pencarian data menggunakan NISN Siswa
Form Cari
Kita gunakan attribut autocomplete="off" supaya bekas kita mencari data itu akan hilang. Kita
tambahkan juga attribut autofocus kedalam input, jadi nanti pas petugas masuk ke menu ini
langsung difokuskan ke input pencarian data. Silahkan teman teman boleh tambahkan attribut
tersebut atau tidak, itu bersifat opsional.
Script Biodata
Didalam table tersebut kita menampilkan isi dari table siswa. Yang kita tampilkan hanya NIS,
NIS, Nama dan Kelas nya saja yaa, Dan kelasnya juga ini sudah kita JOIN dengan table kelas.
History Transaksi ini kita buat Hampir Sama dengan Entry Transaksi Pembayaran yang
sebelumnya kita buat. Hanya ada yang dihilangkan saja pada table tersebut.
Sekarang coba teman teman Test. Tampilan nya nanti akan jadi seperti ini
Tampilan setelah mencari data
Sekarang kita akan membuat sebuah pagging data. Pagging ini bertujuan untuk membagi data
menjadi beberapa halaman. Bayangkan saja ketika data kita itu sudah ratusan atau ribuan akan
sangat merepotkan jika kita harus scrool ke bawah kan. Maka dari itu, kita akan buat pagging ini.
Bagaimana Cara Membuat Pagging itu?
Sebelum Pagging data
Nah, lihat data kelas punya saya ini sudah lumayan banyak yaa. Yang akan saya lakukan ini
adalah membagi data tersebut menjadi beberapa halaman, setiap halamannya itu hanya
menampilkan 5 buah data saja. Jadinya nanti akan seperti ini.
Silahkan teman teman seperti biasa dijalankan terlebih dahulu Web Server dan Code Editornya.
Dan buka coding bagian CRUD Data Kelas !
Konfigurasi Pagging
Hal pertama yang kita lakukan adalah menentukan jumlah data yang akan ditampilkan disetiap
halamannya dan masukkan kedalam variable $totalDataHalaman. Kemudian kita hitung jumlah
data yang ada pada table kelasnya untuk kita bagi dengan Jumlah Data yang akan kita
tampilkan per halamannya. Query yang kita gunakan untuk membaginya adalah ceil fungsinya
untuk pembulatan bilangan ke atas, jika kita ambil contoh yaa, misalkan data yang kita punya
itu 10 terus kita bagi 3 maka hasilnya akan 3.3 yaa, Jika kita gunakan ceil maka nanti hasilnya
akan menjadi 4. Lalu kita tentukan terlebih dahulu data yang akan kita tampilkan itu mulai dari
mana, jika petugas itu berada pada halaman awal pastinya akan menampilkan data mulai dari
awal yaitu index ke [0] - [4] karena data yang akan kita tampilkan itu 5 data saja. Terus jika
petugas itu berada pada halaman ke 2 data keberapa kita tampilkan terlebih dahulu? Pasti data
dari index ke [5]. Sekarang kita buat jadi otomatis, kita buat variable $dataAwal lalu kita
kalikan Total data PerHalaman kita dengan Halaman yang sedang aktif terus kita kurangi
dengan Total data PerHalaman. Jika petugas berada pada halaman pertama, Maka Total data
PerHalaman kita kali dengan angka 1 hasilnya 5 lalu kita kurangi lagi dengan Total data
PerHalaman, jadi hasilnya adalah 0. Coba jika petugas berada pada halaman kedua, Maka 5
kalikan dengan angka 2 hasilnya 10 terus kita kurangi 5 hasilnya 5.
Query LIMIT ini berfungsi untuk membatasi data yang akan kita tampilkan. Querynya LIMIT
[Data awal yang kita tampilkan], [Jumlah data yang akan kita tampilkan]. Kita gunakan
variable yang telah kita konfigurasikan sebelumnya. Jadi jika berada pada halaman kedua,
berarti data awal kita adalah index ke 5 dan jumlah datanya itu adalah 5. Maka sudah benar ya
konfigurasi yang kita buat ini.
Tambahkan dibagian bawah Table !
Silahkan teman teman save dan coba jalankan webnya. Sudah selesai? Atau ada yang error?
Tampilannya sama saja yaa dengan yang kita buat sebelumnya pada login petugas.
Setelah Siswa Login maka nanti akan masuk ke dalam halaman utama siswa
Halaman Utama Siswa
Halaman utama ini hanya menampilkan Biodata Dari Siswa dan History Pembayaran Siswa saja,
Kita buat dalam satu halaman
Sekarang teman teman seperti biasa jalankan Web Server dan Code Editornya. Kita akan mulai
membuat script untuk tampilan tersebut.
Seperti yang saya jelaskan tadi, Siswa hanya bisa Login menggunakan NISN miliknya saja. Jadi
yang kita lakukan adalah membuat sesi NISN Siswa kedalam Proses Login Kita. Proses nya kita
satu file kan saja dengan login ini.
Yang akan kita tampilkan dalam halaman utama ini adalah Biodata Siswa dan History
Pembayaran Siswa. Jadi Hal pertama yang akan kita lakukan adalah memanggil table siswa dan
join table kelas kedalam table siswa untuk kita tampilkan Nama kelas dan Kompetensi Keahlian.
Lalu kita juga akan memanggil table Pembayaran berikut dengan table table lain yang terhubung
dengan table Pembayaran.
Terus kita buat table Untuk menampilkan Seluruh History Pembayaran dari Siswa.
Script Logout
Teman teman save dengan nama logout.php !
File Logout ini berfungsi jika petugas atau siswa menekan tombol logout, fungsinya juga untuk
keluar dari aplikasi. Kita gunakan session_destroy(); untuk keluar dari sesi dan kita arahkan
ke Halaman Login.
Sekarang teman teman coba test dan login menggunakan NISN siswa.
https://jaringscript.blogspot.com/2020/03/bagian-01-pembahasan-soal-ukk-spp.html