You Now Here »

Script PHP untuk Rekap Data dari Data Mentah  (Read 3304 times - 48 votes) 

DANNY

G-Plus Author
  • ADMINISTRATOR
  • More Share Forum Topic
  • [MS] kepala suku
  • *
  • DANNY sangat terkenal!DANNY sangat terkenal!DANNY sangat terkenal!DANNY sangat terkenal!DANNY sangat terkenal!DANNY sangat terkenal!
  • Rep Power: 6
  • Join: September 30, 2009
  • Posts: 11,931
  • Poin: 193.409
    • WWW
  • IP member tracker Logged
Script PHP untuk Rekap Data dari Data Mentah
« on: May 30, 2010, 06:13:50 PM »


Selamat berjumpa lagi para pengunjung setia Blog.RosihanAri.Net, satu lagi persembahan dari kami untuk Anda pecinta web programming. Pada artikel kali ini akan dibahas mengenai cara membuat script untuk menghasilkan rekap data, yang semula berasal dari data mentah MySQL. Script ini dibuat dengan PHP.


Sebagai studi kasus, kita akan mengambil data tentang mahasiswa. Adapun struktur tabel untuk menyimpan data mahasiswa ini adalah sebagai berikut:

Quote
Code: [Select]
CREATE TABLE mahasiswa (
nim varchar(8),
namaMhs varchar(20),
PRIMARY KEY (nim)
)

Quote
Code: [Select]
CREATE TABLE jurusan (
kodeJurusan varchar(3),
namaJurusan varchar(10),
PRIMARY KEY (kodeJurusan)
)

Adapun sampel data untuk tabel mahasiswa adalah:

Quote
Code: [Select]
insert  into mahasiswa values
('M0197001', 'A'),
('M0197002', 'B'),
('M0197003', 'C'),
('M0197004', 'D'),
('M0198001', 'E'),
('M0198002', 'F'),
('M0199001', 'G'),
('M0199002', 'H'),
('M0199003', 'I'),
('M0297001', 'J'),
('M0297002', 'K'),
('M0297003', 'L'),
('M0298001', 'M'),
('M0298002', 'N'),
('M0298003', 'O'),
('M0298004', 'P'),
('M0298005', 'Q'),
('M0299001', 'R'),
('M0299002', 'S'),
('M0299003', 'T'),
('M0397001', 'U'),
('M0397002', 'V'),
('M0398001', 'W'),
('M0398002', 'X'),
('M0399001', 'Y'),
('M0399002', 'Z');

Dalam data di atas, terdapat 26 data mahasiswa yang terdiri dari beberapa tahun angkatan, yaitu Angkatan 97, 98 dan 99, yang tersebar di setiap jurusan. Jurusan apa saja yang ada? ini dia data untuk tabel Jurusan:

Quote
Code: [Select]
insert into jurusan values
('M01', 'Matematika'),
('M02', 'Fisika'),
('M03', 'Kimia');

Nah.. rekap yang akan dibuat adalah menampilkan jumlah mahasiswa per angkatan dan per tahun angkatan, serta jumlah mahasiswa untuk per jurusan. Perhatikan output dari rekap berikut ini:



OK… bagaimana ide untuk membuat rekap di atas? Mudah kok, hanya butuh 2 langkah, yaitu:

Langkah pertama adalah membuat judul kolom tabel untuk NO. dan NAMA JURUSAN, sedangkan kolom tahun angkatan kita buat dinamis yaitu dengan membaca data dari tabel mahasiswa. Untuk mengetahui tahun angkatan berapa saja dalam tabel mahasiswa, kita memanfaatkan query SQL. Tahun angkatan biasa terdapat dalam NIM mahasiswa, dalam contoh ini angkatan ditunjukkan pada digit 4 dan 5. Sehingga kita gunakan SUBSTRING dalam SQL nya. Setelah NO, NAMA JURUSAN, dan TAHUN ANGKATAN sudah dibuat, kolom yang terakhir adalah kolom JUMLAH.

Langkah kedua kita mulai membuat baris dalam tabel. Adapun baris tabel menunjukkan nama masing-masing jurusan dan jumlah mahasiswa per angkatannya. Untuk membuat ini, kita membuat 2 buah looping. Looping yang pertama untuk menampilkan nama Jurusan. Nah… untuk setiap jurusan, kita hitung jumlah mahasiswa per angkatan. Untuk menghitung ini, kita gunakan looping yang kedua.

Quote
Code: [Select]
<?php
 
// koneksi ke mysql
 
mysql_connect("localhost","root","root");
mysql_select_db("data");
?>

 
<h1>Rekap Data Mahasiswa</h1>
 
<table border="1">
 
<!-- membuat nama kolom untuk No Urut dan Nama Jurusan -->
 
<tr>
<td>No</td>
<td>Nama Jurusan</td>
 
<?php
 
// query untuk mencari tahun angkatan berapa saja
// dari mahasiswa
 
$query "SELECT DISTINCT substring(nim, 4, 2) as angkatan
          FROM mahasiswa"
;
$hasil mysql_query($query);
while (
$data mysql_fetch_array($hasil))
{
 
// menampilkan nama kolom untuk setiap angkatan yang ada
 
echo "<td>Angkatan ".$data['angkatan']."</td>";
}
?>

 
<!-- membuat nama kolom untuk Jumlah -->
 
<td>Jumlah</td>
</tr>
 
<?php
 
// nilai awal untuk no. urut
 
$no 1;
 
// query untuk menampilkan nama masing-masing jurusan
 
$query "SELECT * FROM jurusan";
$hasil mysql_query($query);
 
// looping pertama untuk menampilkan nama jurusan
 
while ($data mysql_fetch_array($hasil))
{
 
// kode jurusan diambil untuk query mencari jumlah
// mahasiswa per angkatan
 
$kodeJurusan $data['kodeJurusan'];
 
echo 
"<tr>";
 
// menampilkan no. urut dan nama jurusan
 
echo "<td>".$no."</td><td>".$data['namaJurusan']."</td>";
 
// query untuk menampilkan angkatan berapa saja dalam
// tabel mahasiswa
 
$query2 "SELECT DISTINCT substring(nim, 4, 2) as angkatan
           FROM mahasiswa"
;
$hasil2 mysql_query($query2);
 
// nilai awal untuk menjumlahkan mahasiswa per angkatan
 
$jumMhsPerJurusan 0;
 
// looping kedua untuk menampilkan jumlah mhs per angkatan
 
while ($data2 mysql_fetch_array($hasil2))
{
$angkatan $data2['angkatan'];
 
// query untuk mencari jumlah mhs per angkatan per jurusan
 
$query3 "SELECT count(*) as jumlah
           FROM mahasiswa
           WHERE substring(nim, 4, 2) = '
$angkatan' AND
                 substring(nim, 1, 3) = '
$kodeJurusan'";
$hasil3 mysql_query($query3);
$data3  mysql_fetch_array($hasil3);
 
// menghitung total mahasiswa per jurusan
// (gunakan increment)
 
$jumMhsPerJurusan += $data3['jumlah'];
 
// menampilkan jumlah mahasiswa per angkatan per jurusan
 
echo "<td>".$data3['jumlah']."</td>";
}
 
// menampilkan jumlah total mahasiswa per jurusan
 
echo "<td>".$jumMhsPerJurusan."</td>";
echo 
"</tr>";
 
// increment untuk no. urut data
 
$no++;
}
?>

 
</table>


sumber

  :beer:


View Mobile Web Short URL: