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 **

Komentar

Halaman Lainya

  • Cara upload gambar dengan php dan menyimpan kedalam database mysql
    Ada dua cara dalam php agar kita bisa upload gambar dan memanggilnya kembali. Cara pertama dengan menyimpan objek gambarnya kedalam database dan cara kedua adalah menyimpan objek gambar dalam folder dan menyimpan nama filenya didalam database mysql.
  • Membagi form dalam beberapa halaman
    Ada beberapa contoh kasus yang mengharuskan kita membagi form dalam beberapa halaman, agar proses input lebih mudah dan dapat memunculkan pilihan sesuai dengan inputan awal. Berikut ini saya akan berbagi trick bagaimana membuat beberapa form yang terpisah halaman bisa saling terhubung dalam sebuah proses.
  • Membuat aplikasi data mahasiswa dengan PHP - Bagian 1
    Pada artikel ini saya akan menjelaskan langkah-langkah secara lengkap membuat aplikasi data mahasiswa dengan php. Bahasan akan saya bagi menjadi beberapa bagian yaitu Langkah Membuat database, Membuat koneksi database, membuat menu utama, membuat form input data, membuat proses simpan dan upload gambar, membuat laporan membuat pencarian, membuat delete data, membuat form update, membuat proses update, membuat tabel login, membuat proses login, dan terakhir membuat proses logout.
  • Menyederhanakan operasi mysql dengan function dalam php
    Sering dalam sebuah aplikasi web khususnya php, kita melakukan operasi database mysql secara berulang. Misal melakukan pengecekan, perhitungan, perbandingan ataupun operasi-operasi umum lainya yang dilibatkan dalam sebuah proses besar. Hal ini sangat tidak efektif karena kita harus menyusunya berulang-ulang yang kadang berujung pada sulitnya melakukan pengembangan. Pada tulisan ini saya akan berbagi trik jitu agar masalah diatas bisa teratasi dengan mudah.
  • 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