Hai, masih dalam lanjutan pembuatan
Aplikasi Pembayaran SPP Berbasis Web
yang tadinya hanya sampai part 10, tapi karena ada permintaan dari teman-teman
maka dibuatlah artikel ini.
Dalam artikel ini kita akan membuat fitur Tahun Ajaran Baru, dimana ketika
fitur ini dijalankan maka akan menambahkan data siswa dan data pembayaran
untuk siswa kelas X (sepuluh) dan XI (sebelas) saja.
Pada part ini akan lakukan perubahan pada database dan beberapa file .php yang
sudah dibuat, diantaranya:
- Database
- tb_siswa - tambahkan id_siswa didalamnya
- admin (folder)
Tambahan kolom dan file .php, diantaranya:
- Database
- tb_kelas - buat tabel baru dengan nama tb_kelas
- admin (folder)
tb_siswa
Ada sedikit tambahan pada tb_siswa, yaitu menambahkan kolom id_siswa didalamnya, ini akan mempengaruhi pada proses CRUD data siswa yang sebelumnya
menggunakan nisn untuk menentukan suatu kriteria.
Berikut adalah gambar struktur tb_siswa yang baru:
header.php
Tambahkan baris kode berikut setelah list menu Laporan Pembayaran:
<li><a href="?p=tab" onclick="return confirm('Buat data tahun ajaran baru?')">Tahun Ajaran Baru</li>
Sehingga akan nampak seperti berikut:
<ul style="display:flex; list-style:none;">
<li><b>Aplikasi Pembayaran SPP</b></li>
<li><a href="?p=siswa">Data Siswa</a></li>
<li><a href="?p=petugas">Data Petugas</a></li>
<li><a href="?p=spp">Data SPP</a></li>
<li><a href="?p=laporan">Laporan Pembayaran</a></li>
<li><a href="?p=tab" onclick="return confirm('Buat data tahun ajaran baru?')">Tahun Ajaran Baru</li>
<li><a href="?p=logout">Logout</a></li>
</ul>
index.php
Pada file ini kita tambahkan kondisi untuk menu tahun ajaran baru, dimana kita
akan melakukan pengecekan tahun ajaran.
Jika tahun ajaran baru belum ada dalam data spp maka akan menampilkan pesan
agar membuat data baru pada data spp.
Letakan kode berikut setelah kondisi laporan pembayaran atau sebelum kondisi untuk logout.
elseif($_GET['p'] == 'tab') {
// langsung jalankan fungsi tambah data ajaran baru
$thnAjar = $admin->cekTahunAjaran();
$thnAjar = mysqli_fetch_array($thnAjar);
$thnSPP = $admin->getMaxTahunSPP();
$thnSPP = mysqli_fetch_array($thnSPP);
if ($thnAjar < $thnSPP) {
// panggil halaman tahun ajaran baru
$status = true;
require_once "tahun-ajaran-baru.php";
} else {
$status = false;
echo "<script>alert('Data SPP untuk tahun ajaran baru belum dibuat'); window.location.href='?p=spp'</script>";
}
}
Admin.php
Sudah dijelaskan diatas, karena kita menambahkan
id_siswa dan akan merubah semua kriteria yang tadinya berdasarkan
nisn menjadi id_siswa, maka method yang ada hubungannya dengan
tb_siswa juga ikut diubah.
Berikut kode lengkapnya:
<?php
require_once '../../config/Koneksi.php';
class Admin extends Koneksi {
public function getDataPetugas($id) {
$stmt = mysqli_query($this->konek, "SELECT * FROM tb_petugas WHERE id_petugas = '" . $id . "'");
return $stmt;
}
public function getAllDataPetugas() {
$stmt = mysqli_query($this->konek, "SELECT * FROM tb_petugas");
return $stmt;
}
public function tambahDataPetugas($nama, $username, $password, $level) {
$stmt = mysqli_query($this->konek, "INSERT INTO tb_petugas VALUES ('', '$username', '$password', '$nama', '$level')");
if($stmt) {
return true;
} else {
return false;
}
}
public function ubahDataPetugas($nama, $username, $password, $level, $id) {
$stmt = mysqli_query($this->konek, "UPDATE tb_petugas SET nama_petugas = '$nama', username = '$username', password = '$password', level = '$level' WHERE id_petugas = '$id'");
if($stmt) {
return true;
} else {
return false;
}
}
public function hapusDataPetugas($id) {
$stmt = mysqli_query($this->konek, "DELETE FROM tb_petugas WHERE id_petugas = '$id'");
if($stmt) {
return true;
} else {
return false;
}
}
public function getDataSPP() {
$stmt = mysqli_query($this->konek, "SELECT * FROM tb_spp ORDER BY tahun ASC");
return $stmt;
}
public function tambahDataSPP($tahun, $nominal) {
$stmt = mysqli_query($this->konek, "INSERT INTO tb_spp VALUES ('', '" . $tahun . "', '" . $nominal . "')");
if($stmt) {
return true;
} else {
return false;
}
}
public function getDataSPPbyId($id) {
$stmt = mysqli_query($this->konek, "SELECT * FROM tb_spp WHERE id_spp = '".$id."'");
return $stmt;
}
public function ubahDataSPP($tahun, $nominal, $id) {
$stmt = mysqli_query($this->konek, "UPDATE tb_spp SET tahun = '".$tahun."', nominal = '".$nominal."' WHERE id_spp = ".$id);
if($stmt) {
return true;
} else {
return false;
}
}
public function hapusDataSPP($id) {
$stmt = mysqli_query($this->konek, "DELETE FROM tb_spp WHERE id_spp = ".$id);
if($stmt) {
return true;
} else {
return false;
}
}
public function getDataSiswa() {
$stmt = mysqli_query($this->konek, "SELECT * FROM tb_siswa INNER JOIN tb_spp ON tb_siswa.id_spp = tb_spp.id_spp ORDER BY NISN ASC");
return $stmt;
}
public function cekDataSiswa($nisn, $nis) {
$stmt = mysqli_query($this->konek, "SELECT * FROM tb_siswa WHERE nisn = '$nisn' OR nis = '$nis'");
if($stmt) {
return true;
} else {
return false;
}
}
public function tambahDataSiswa($nisn, $nis, $nama, $kelas, $tahun) {
$stmt = mysqli_query($this->konek, "INSERT INTO tb_siswa VALUES ('', '$nisn', '$nis', '$nama', '$kelas', '$tahun')");
if ($stmt) {
return true;
} else {
return false;
}
}
public function getDataSiswaById($id_siswa) {
$stmt = mysqli_query($this->konek, "SELECT * FROM tb_siswa WHERE id_siswa = '$id_siswa'");
return $stmt;
}
public function ubahDataSiswa($id_siswa, $nis, $nama, $kelas, $tahun, $nisn) {
$stmt = mysqli_query($this->konek, "UPDATE tb_siswa AS s, tb_pembayaran AS p SET s.nis = '$nis', s.nama_lengkap = '$nama', s.kelas = '$kelas', s.id_spp = '$tahun', p.id_spp = '$tahun' WHERE s.id_siswa = '$id_siswa'");
if($stmt) {
return true;
} else {
return false;
}
}
public function hapusDataSiswa($id_siswa) {
$stmt = mysqli_query($this->konek, "DELETE FROM tb_siswa WHERE id_siswa = '$id_siswa'");
if($stmt) {
return true;
} else {
return false;
}
}
public function tambahDataPembayaran($nisn, $bulan, $id_spp) {
$stmt = mysqli_query($this->konek, "INSERT INTO tb_pembayaran (nisn, bulan_dibayar, id_spp) VALUES ('$nisn', '$bulan', '$id_spp')");
if ($stmt) {
return true;
} else {
return false;
}
}
public function hapusDataPembayaran($nisn) {
$stmt = mysqli_query($this->konek, "DELETE FROM tb_pembayaran WHERE nisn = '$nisn'");
if($stmt) {
return true;
} else {
return false;
}
}
public function getDataPembayaranPerPeriode($date1, $date2) {
$stmt = mysqli_query($this->konek, "SELECT s.nisn, p.tgl_bayar, spp.tahun, spp.nominal FROM tb_siswa AS s INNER JOIN tb_pembayaran AS p ON s.nisn = p.nisn INNER JOIN tb_spp AS spp ON p.id_spp = spp.id_spp WHERE p.tgl_bayar BETWEEN '$date1' and '$date2'");
return $stmt;
}
public function cekTahunAjaran() {
$stmt = mysqli_query($this->konek, "SELECT MAX(spp.tahun) AS MaxTahun FROM tb_siswa AS s INNER JOIN tb_spp AS spp WHERE s.id_spp = spp.id_spp");
return $stmt;
}
public function getMaxTahunSPP() {
$stmt = mysqli_query($this->konek, "SELECT MAX(tahun) FROM tb_spp");
return $stmt;
}
public function tahunAjaranBaru() {
$stmt = mysqli_query($this->konek, "SELECT nisn, nis, nama_lengkap, MAX(kelas) AS kelas, id_spp FROM tb_siswa GROUP BY nisn");
return $stmt;
}
}
Agak sedikit panjang kan ya! :D Okeh, kita lanjutkan.
tb_kelas
Buat tabel baru dengan nama tb_kelas, strukturnya akan seperti berikut:
dan tambahkan 3 record didalamnya untuk masing-masing kelas (X, XI dan XII).
tahun-ajaran-baru.php
File ini digunakan untuk proses penggandaan data siswa kelas X dan XI, sebagai
contoh, data siswa kelas X akan digandakan tetapi pada kolom kelas akan
berubah menjadi kelas XI, begitupun dengan kelas XI, akan menjadi kelas XII.
<?php
if ($status) {
$d = $admin->tahunAjaranBaru();
while ($r = mysqli_fetch_assoc($d))
// print_r($r);
if ($r['kelas'] == 1 || $r['kelas'] == 2) {
$kelas = $r['kelas'] + 1;
if($admin->tambahDataSiswa($r['nisn'], $r['nis'], $r['nama_lengkap'], $kelas, $r['id_spp']))
{
$bulan[] = ['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'];
for ($i=0; $i < 12; $i++) {
$admin->tambahDataPembayaran($r['nisn'], $bulan[0][$i], $r['id_spp']);
}
echo "<script>alert('Data tahun ajaran baru berhasil dibuat'); window.location.href = '?p=siswa'</script>";
}
else
{
echo "<script>alert('Data tahun ajaran baru berhasil dibuat'); window.location.href = '?p=siswa'</script>";
}
}
}
}
?>
0 Komentar