Aplikasi Pembayaran SPP Berbasis Web Part 13 - Tahun Ajaran Baru #2

PlajariKode - Aplikasi Pembayaran SPP Berbasis Web dengan PHP dan MySQL

Tutorial Aplikasi - Aplikasi Pembayaran SPP Berbasis Web dengan PHP dan MySQL.

Halo, berjumpa lagi dalam blog sederhana ini, masih dalam pembuatan fitur Tahun Ajaran Baru,

Dalam artikel ini akan ada beberapa perubahan pada method dalam class Admin, khususnya yang berkaitan dengan CRUD data siswa.

Part sebelumnya: Pembuatan fitur tahun ajaran baru bagian 1

Langsung saja, berikut adalah file - file yang akan diubah:

  • admin (folder)
    • Admin.php
    • index.php
    • tambah-siswa.php
    • ubah-siswa.php


Method dan file baru yang akan dibuat:

  • Admin (class)
    • tahunAjaranBaru()
  • admin (folder)
    • tahun-ajaran-baru.php

Admin.php

Pada file ini kita akan ubah beberapa method yang berkaitan dengan CRUD data siswa, berikut kode lengkap untuk file Admin.php
<?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;
	}
}

index.php

Pada file ini kita hanya akan tambahkan variabel status dengan nilai true jika kondisi terpenuhi dan false apabila kondisi tidak terpenuhi.
<?php 
require_once 'header.php';

if(isset($_GET['p'])) {
	if($_GET['p'] == 'siswa') {
		require_once 'data-siswa.php';
	} elseif($_GET['p'] == 'tambah-siswa') {
		require_once 'tambah-siswa.php';
	} elseif($_GET['p'] == 'ubah-siswa') {
		require_once 'ubah-siswa.php';
	} elseif($_GET['p'] == 'hapus-siswa') {
		if($admin->hapusDataSiswa($_GET['id']))
		{
			$admin->hapusDataPembayaran($_GET['id']); // lanjut video selanjutnya ...
			header('Location: ?p=siswa');
			$_SESSION['pesan'] = "Data Siswa berhasil dihapus";
		}
		else
		{
			header('Location: ?p=siswa');
			$_SESSION['pesan'] = "Data Siswa gagal dihapus";
		}
	// baris kode untuk navigasi petugas
	} elseif($_GET['p'] == 'petugas') {
		require_once 'data-petugas.php';
	} elseif($_GET['p'] == 'tambah-petugas') {
		require_once 'tambah-petugas.php';
	} elseif($_GET['p'] == 'ubah-petugas') {
		require_once 'ubah-petugas.php';
	} elseif($_GET['p'] == 'hapus-petugas') {
		if($admin->hapusDataPetugas($_GET['id'])) // digunakan untuk hapus data petugas
		{
			header('Location: ?p=petugas');
			$_SESSION['pesan'] = "Data Petugas berhasil dihapus";
		}
		else
		{
			header('Location: ?p=petugas');
			$_SESSION['pesan'] = "Data Petugas gagal dihapus";
		}
	} elseif($_GET['p'] == 'spp') {
		require_once 'data-spp.php'; 
	} elseif($_GET['p'] == 'tambah-spp') {
		require_once 'tambah-spp.php'; 
	} elseif($_GET['p'] == 'ubah-spp') {
		require_once 'ubah-spp.php';
	} elseif($_GET['p'] == 'hapus-spp') {
		if($admin->hapusDataSPP($_GET['id']))
		{
			header('Location: ?p=spp');
			$_SESSION['pesan'] = "Data SPP berhasil dihapus";
		}
		else
		{
			header('Location: ?p=spp');
			$_SESSION['pesan'] = "Data SPP gagal dihapus";
		}
	} elseif($_GET['p'] == 'laporan') {
		require_once 'laporan-pembayaran.php';
	} 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>";
		}

	} elseif($_GET['p'] = 'logout') {
		header('Location: ../../index.php');
		session_destroy();
	}
}	

require_once 'footer.php'; 
?>

tambah-siswa.php

Dalam file ini kita hanya merubah value pada option kelas yang tadinya X, XI dan XII menjadi 1, 2 dan 3.
<option value="1">X</option>
		<option value="2">XI</option>
		<option value="3">XII</option>

ubah-siswa.php

Sama seperti pada file tambah-siswa, difile ini hanya merubah value option kelas menjadi 1, 2 dan 3.
<option value="1">X</option>
		<option value="2">XI</option>
		<option value="3">XII</option>

tahunAjaranBaru()

Kembali ke file Admin.php, dalam class Admin kita tambahkan method baru dengan nama tahunAjaranBaru().
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;
	}

tahun-ajaran-baru.php

Didalam folder admin, buat file baru dengan nama tahun-ajaran-baru.php, dalam file ini terdapat kondisi agar method tahunAjaranBaru() dieksekusi jika siswa itu kelas 1 atau 2.
<?php

if ($status) {
  $d = $admin->tahunAjaranBaru();

  while ($r = mysqli_fetch_assoc($d)) {
    // print_r($r);

    if ($r['kelas'] == 1 || $r['kelas'] == 2) {
      $nisn = $r['nisn'];
      $nis = $r['nis'];
      $nama = $r['nama_lengkap'];
      $kelas = $r['kelas'] + 1;
      $id_spp = $r['id_spp'];

      if($admin->tambahDataSiswa($nisn, $nis, $nama, $kelas, $id_spp))
      {
        $bulan[] = ['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'];

        for ($i=0; $i < 12; $i++) { 
          $admin->tambahDataPembayaran($nisn, $bulan[0][$i], $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 gagal dibuat'); window.location.href = '?p=siswa'</script>";
      }
    }
  }
}

Apabila ada yang kurang dipahami, silahkan simak video tutorialnya disini. Terimakasih dan sampai jumpa.

Posting Komentar

4 Komentar

  1. Lanjutannya kapan bang? Mau ujian ini, mohon dipercepat bang

    BalasHapus
    Balasan
    1. Sudah bang, bisa dilihat dimari https://www.plajarikode.com/2021/02/aplikasi-pembayaran-spp-part-14.html

      Hapus
    2. Ok bang terimakasih, untung masih sempet

      Hapus
  2. bang, saya mau nanya
    untuk bagian tahun ajaran baru, kenapa tahunya juga nggk mau berubah sesuai dengan tahun yg sudah kitas masukkan di tada spp?

    BalasHapus