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

  • Menyimpan data dalam banyak tabel bersamaan
    Jika anda membuat aplikasi php dan mysql yang menggunakan beberapa tabel database mungkin akan menemui proses menyimpan data ke dalam banyak tabel secara bersamaan dalam satu proses. Contoh sederhana membuat aplikasi php penjualan yang dalam prosesnya menyimpan data dalam tabel transaksi dan sub transaksi.
  • Membuat aplikasi data mahasiswa dengan PHP - Bagian 6
    Ini bagian terakhir artikel saya tentang tentang membuat aplikasi data mahasiswa dengan php, Pada artikel sebelumnya membuat aplikasi data mahasiswa bagian 5, saya sudah merancang tabel database pengguna dan menyisipkan 1 nama pengguna dengan password yang disimpan dalam format md5. Sekarang saya akan merancang form login dan proses login, serta melindungi semua halaman pengelolaan data mahasiswa yang sudah dibuat.
  • Membuat paging dengan combo box
    Membuat paging dengan combo box. Sebelumnya saya menulis tentang bagaimana membuat paging sederhana dengan cara menampilkan nomor halaman sebagai pilihan halamanya. Dengan cara tersebut untuk kasus data yang sedikit tidak bemasalah karena pilihan halaman tentunya juga sedikit, akan tetapi pada kasus data yang banyak mungkin ribuan bahkan lebih akan bermasalah karena pilihan halaman akan sangat banyak. Ada beberapa alternatif agar lebih mudah, salah satunya dengan membuat pilihan halaman dalam list/menu atau yang sering disebut combo box.
  • Mengenal variabel dan keterangan dalam php
    PHP juga memiliki data penampung sementara yang disebut variabel seperti halnya bahasa pemrograman lainnya. Tapi sedikit ada perbedaan cara penulisanya jika anda terbiasa dengan bahasa pemrograman lain. Silahkan simak berikut ini.
  • Contoh penggunaan fungsi string dalam php
    PHP telah menyediakan banyak sekali function yang berhubungan dengan pengolahan string/text. Jika dihitung-hitung sekitar 98 function. Fungsi-fungsi tersebut dibuat pasti karena alasan agar dapat digunakan untuk benyak keperluan. Saya pikir kita tidak perlu pusing menghafalnya, cukup mengetahui saja bagaimana penggunaan serta fungsinya. Berikut ini saya akan buatkan beberapa contoh penggunaan fungsi string tersebut.

Kiriman terbaru