Membuat laporan detail bercabang dengan php

Membuat laporan detail bercabangKali ini saya ingin bahas tentang bagaimana membuat laporan detail bercabang dengan php. Maksud bercabang disini adalah sebuah laporan memiliki sub detail, dan didalam sub masih ada lagi laporan lagi sesuai sub yang dipilih.  Saya beri contoh kasus informasi pada sebuah perguruan tinggi. Dalam sebuah universitas terdapat beberapa fakultas, dalam sebuah fakultas terdapat beberapa jurusan.

Dari contoh kasus diatas, sebenarnya kemungkinan sub laporanya masih ada misal dalam sebuah jurusan ada banyak kelas, dalam sebuah kelas ada banyak mahasiswa, tiap mahasiswa memiliki banyak mata kuliah atau nilai dst. Tapi saya tidak bahas sampai detail itu, cukup sampai ke level jurusan.

Berikut ini contoh desain tabel datanya (saya buat minimal dilarang protes) :

Nama database : db_univ (silahkan di create sendiri). Kemudian buat tabelnya :

tabel universitas

kode_univ int(11) primary auto number
nama_niv varchar(30)

tabel fakultas

kode_fak int(11) primary auto number
kode_univ int(11)
nama_fak varchar(30)

tabel jurusan

kode_jur int(11) primary auto number
kode_fak int(11)
nama_jur varchar(30)

Ini query create tabel dan datanya :

CREATE TABLE IF NOT EXISTS `tb_fak` (
  `kode_fak` int(11) NOT NULL AUTO_INCREMENT,
  `kode_univ` int(11) NOT NULL,
  `nama_fak` varchar(30) NOT NULL,
  PRIMARY KEY (`kode_fak`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `tb_jur` (
  `kode_jur` int(11) NOT NULL AUTO_INCREMENT,
  `kode_fak` int(11) NOT NULL,
  `nama_jur` varchar(30) NOT NULL,
  PRIMARY KEY (`kode_jur`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `tb_univ` (
  `kode_univ` int(11) NOT NULL AUTO_INCREMENT,
  `nama_univ` varchar(30) NOT NULL,
  PRIMARY KEY (`kode_univ`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

INSERT INTO `tb_fak` (`kode_fak`, `kode_univ`, `nama_fak`) VALUES
(1, 1, 'Fak. Teknik'),
(2, 2, 'Fak. Ekonomi'),
(3, 1, 'Fak. Fisip');

INSERT INTO `tb_jur` (`kode_jur`, `kode_fak`, `nama_jur`) VALUES
(1, 1, 'Tek. Informasi'),
(2, 1, 'Tek. Mesin');

INSERT INTO `tb_univ` (`kode_univ`, `nama_univ`) VALUES
(1, 'UNIV. JAYA'),
(2, 'UNIV. MERDEKA');

Kita mulai membuat koneksi database (koneksi.php) dengan isi seperti berikut :

<?php
   $dbserver="localhost";
   $dbusername="root";
   $dbpassword="";
   $dbname="db_univ";
   mysql_connect($dbserver,$dbusername,$dbpassword) or die(mysql_error());
   mysql_select_db($dbname) or die (mysql_error());
?>

Kita mulai dari membuat laporan universitas, seperti kode berikut :

<?php
	include("koneksi.php");
?>
<html>
<head>
<title>Daftar Universitas</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<h2 align="center">Daftar Universitas</h2>
<table width="400" border="1" align="center" cellpadding="3" cellspacing="0">
  <tr>
    <td>Nama Universitas</td>
    </tr>
<?php
   $myquery="select kode_univ,nama_univ from tb_univ";
   $laporan=mysql_query($myquery) or die (mysql_error());
   while($rec=mysql_fetch_object($laporan))
   {
?>
  <tr>
    <td><a href="laporan-fak.php?kode_univ=<?php echo  $rec->kode_univ?>"><?php echo  $rec->nama_univ?></a></td>
    </tr>
<?php
   }
?>
</table>
<div align="center">
<div align="center"><a href="javascript:history.back()">Kembali</a>
</div>
</body>
</html>

Jika anda jalankan hasilnya seperti ini :

contoh laporan universitas

Dari laporan universitas, jika di klik salah satu nama universitas maka akan dihubungkan dengan daftar nama fakultas pada masing-masing universitas. Untuk laporan fakultas, hampir mirip dengan laporan universitas hanya sedikit dimodifikasi tampilan dan querynya. Lihat script berikut :

<?php
	include("koneksi.php");
?>
<html>
<head>
<title>Laporan Data Mahasiswa</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<h2 align="center">Daftar Fakultas</h2>
<table width="400" border="1" align="center" cellpadding="3" cellspacing="0">
  <tr>
    <td>Nama Fakultas</td>
    </tr>
<?php
   $myquery="select kode_fak,nama_fak from tb_fak where kode_univ='".$_GET['kode_univ']."'";
   $laporan=mysql_query($myquery) or die (mysql_error());
   while($rec=mysql_fetch_object($laporan))
   {
?>
  <tr>
    <td><a href="laporan-jur.php?kode_fak=<?php echo  $rec->kode_fak?>"><?php echo  $rec->nama_fak?></a></td>
    </tr>
<?php
   }
?>
</table>
<div align="center"><a href="javascript:history.back()">Kembali</a>
</div>
</body>
</html>

Jika universitas dipilih maka tampil halaman laporan fakultas seperti berikut :

contoh laporan fakultas

Laporan diatas, adalah fakultas yang berada pada universitas yang sudah dipilih. Pada laporan fakutas, kita bisa memilih lagi fakultas mana yang akan kita lihat jurusanya. Laporan jurusan, juga tidak berbeda jauh dengan laporan universitas dan fakultas. Scripnya seperti ini :

<?php
	include("koneksi.php");
?>
<html>
<head>
<title>Laporan Data Mahasiswa</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<h2 align="center">Daftar Jurusan</h2>
<table width="400" border="1" align="center" cellpadding="3" cellspacing="0">
  <tr>
    <td>Nama Jurusan</td>
    </tr>
<?php
   $myquery="select kode_jur,nama_jur from tb_jur where kode_fak='".$_GET['kode_fak']."'";
   $laporan=mysql_query($myquery) or die (mysql_error());
   while($rec=mysql_fetch_object($laporan))
   {
?>
  <tr>
    <td><?php echo  $rec->nama_jur?></td>
    </tr>
<?php
   }
?>
</table>
<div align="center"><a href="javascript:history.back()">Kembali</a>
</div>
</body>
</html>

Dan hasilnya jika anda pilih fakultas maka muncul laporan jurusan seperti ini :

contoh laporan jurusan

Dari contoh-contoh script diatas, kita bisa buat sub lagi dibawah laporan jurusan. Misal dengan memilih jurusan, kita tampilkan nama mahasiswa, dari nama mahasiswa kita tampilkan nilai dst.

Mudahan ini bisa menginspirasi anda yang sedang galau dalam hal laporan detail yang bercabang.

Silahkan download contoh laporan detail bercabang dengan php ini.

Selamat mencoba dan semoga bisa diterapkan pada kasus-kasus lainnya

Zainal Hakim

** Bebas disunting dengan menyebutkan sumber **

Artikel Lainnya

  • Menghapus file dengan php
    Dengan php kita bisa melakukan operasi terhadap file yang berada dalam server. Operasi file yang bisa dilakukan diantaranya adalah menghapus file. Berikut ini caranya.
  • Membaca file csv dengan php
    CSV adalah jenis file yang sering digunakan untuk menyimpan data berupa huruf dan angka dalam bentuk plain-text. CSV (comma separated values) ini menyimpan dengan susunan baris data yang dipisah dengan karakter coma.
  • Membuat upload video dengan php
    Secara teknik dasar membuat form upload untuk video tidak berbeda dengan cara membuat form upload gambar yang sudah saya tulis pada tutorial sebelumnya. Hanya berbeda pada bagian proses menangani file yang diupload ke server.
  • Membuat tabel warna-warni dengan php
    Tentunya anda pernah melihat sebuah laporan yang disajikan secara unik dan menarik php. Misal, tabel tersebut dibuat dengan warna selang seling/warna-warni. Tujuan dibuat warna-warni seperti itu bukan hanya agar tampilan lebih menarik tapi juga bertujuan agar baris-baris data bisa terlihat dengan jelas. Bagaimana membuatnya dalam php? Simak tulisan saya berikut ini.
  • Cara membuat proses menyimpan data kedalam database mysql dengan php
    Untuk membuat proses penyimpanan data kedalam mysql dengan php kita harus membuat koneksi database, mengecek isi form, dan menjalankan perintah mysql untuk menyimpan data.

Kiriman terbaru