Dapatkan 'Easy Gammu Installer' - Cara Mudah Install Gammu + Ebook Gammu
Ingin Punya Script SMS Gateway dengan PHP + MySQL?

Dapatkan segera phpSMS V3.0, software SMS Gateway multi fungsi berbasis web buatan saya sendiri untuk keperluan Anda.
[Info Lengkap...]

Membuat Script PHP untuk Rekap Data dari Data Mentah


September 5th, 2008 | by rosihanari | Cetak Artikel Ini Cetak Artikel Ini

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:

CREATE TABLE mahasiswa (
nim varchar(8),
namaMhs varchar(20),
PRIMARY KEY (nim)
)
[/sourcecode]
dan

CREATE TABLE jurusan (
kodeJurusan varchar(3),
namaJurusan varchar(10),
PRIMARY KEY (kodeJurusan)
)
[/sourcecode]
Adapun sampel data untuk tabel mahasiswa adalah:

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');
[/sourcecode]
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:

insert into jurusan values
('M01', 'Matematika'),
('M02', 'Fisika'),
('M03', 'Kimia');
[/sourcecode]
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:

  1. 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.
  2. 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.

// koneksi ke mysql

mysql_connect("localhost","root","root");
mysql_select_db("data");
?>

Rekap Data Mahasiswa

// 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 "

";
}
?>

// 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 "

";

// menampilkan no. urut dan nama jurusan

echo "

";

// 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 "

";
}

// menampilkan jumlah total mahasiswa per jurusan

echo "

";
echo "

";

// increment untuk no. urut data

$no++;
}
?>

No Nama Jurusan Angkatan ".$data['angkatan']." Jumlah
".$no." ".$data['namaJurusan']." ".$data3['jumlah']." ".$jumMhsPerJurusan."

[/sourcecode]
Ada pertanyaan dan masalah terkait dengan tutorial di atas? Silakan isi komentar di bawah ini.

VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)

Anda ingin mendownload beberapa tool programming 100% gratis?
Silakan download di FREE PROGRAMMING TOOLS.
atau ingin berdonasi untuk pengembangan blog ini cukup dengan $1 via Paypal?



Beberapa artikel terkait


Share this article on:

Kata kunci: PHP - php rekap - rekap data - script php - script rekap -


Ada 17 komentar dalam artikel ini.

  1. Romeo says:

    Tutorial nya keren mas… simple tapi bagus…
    btw, gw mau tanya soal substring dalam topik di atas, maksudnya apa yach??? :P

  2. rosihanari says:

    Subtring dalam MySQL berguna untuk mengambil sebagian karakter dalam suatu string. Coba baca artikel di sini

  3. sarwanto says:

    terima kasih ya..
    oh iya mas aku juga mo tanya nie, jika hasih recordnya dibalik gimna ya…
    jadi no, nama_jurusan, angkatan disebelah kiri semua dan hasilnya berada disebelah kanannya gak dibawahnya,

    terus juga bagaimana caranya membuat inputan id
    untuk memcari data yang diinginkan sehingga hasilnya terdapat dalam table itu

  4. rosihanari says:

    to sarwanto: bisa mas, kalo itu cuman masalah menampilkan ke tabel saja. Berarti anda harus mengutak-atik tag untuk tabelnya.

  5. Terimakasih mas infonya. Sangat membantu saya dalam belajar membangun situs saya http://www.ebooklangka.co.cc . Thnks.

  6. Anjar says:

    Bagus2 sangat membantu saya.

    Mas.. Tongin saya dung..

    Saya ma nayak ni..
    Gimana mencari Angkatan, Jurusan dari nim mis. DB nya seperti ini
    Tabel MHS
    NIM Nama
    060501 Andi “06″ Angkatan 2006, “05″ Jur TI
    050401 Budi “05″ Angt 2005, “04″ Jur SK
    050301 Cinta “05″ Angk 2005, “03″ Jur SI

    Tabel JUR.

    KDJUR NAMAJUR
    05 TI
    04 SK
    03 SI

    Tolong ya mas…

    Dan bagi yang mau ngebatuin saya tolong dikirim ke e-mail: anjarprotc@gmail.com

  7. aliefchandra says:

    mas kalau bikin kalkulator online bisa gak mas?? saya masih belajar untuk itu…jangan lupa tukeran link ya mas….

  8. abie says:

    Sangat bermanfaat, ikut ngunduh tutor nya ya mas…
    Thanks to much….

  9. gigih says:

    pak rosi, bagaimana jika membuat cross tab klo tahunnya dari 1990 sampai 2010, saya kemarin pakai skript ini g bisa diurutkan..hehe mohon pencerahannya..hasilnya pasti mulai dari 00,01,02…90,91..dst, nuwun…blognya ajiiib punya..mantab!!

  10. rosihanari says:

    @gigih: maaf mas, saya gak paham maksudnya… plz dijelasin lebih detil ya.. maklum saya dah tua nih :-)

  11. gigih says:

    setelah saya coba,dan saya praktekkan skript tsb okeh!!lalu saya pingin membuat yang beda dengan memasukkan data nim angkatan 200 s/d 2009 trus setelah saya coba hasilnya g bisa urut, spt ini angkatannya 98,97,99,08,07,06,dst yang saya inginkan, bagaimana cara mengurutkan angkatannya pak? spt ini contohnya 97,98,99,00,01,02,03,04,dst..trims

  12. rosihanari says:

    @gigih: karena pada kasus di atas tahun angkatannya hanya ada 2 digit yang terdapat pada NIM, maka tidak bisa diurutkan menjadi 97,98,99,00,01,02,03,04 dst mas, paling banter kalo diurutkan menjadi 00, 01, 02, 03, 04, 97, 98, 99, dst… Untuk kasus Anda sebaiknya ditambahkan field lagi untuk menyatakan angkatan dengan 4 digit yang lengkap. Nah.. nanti di query SQL nya tinggal kasih ORDER BY thnAngkatan.

  13. chika says:

    Kalo Buat database dari lembar kerja PHP gmn Mas??createnya bukan dari MySql

  14. rosihanari says:

    @chika: lha terus kalo bukan dari mysql, pakai apa mbak?

  15. aan says:

    mungkin mksud si chika,gmn bikin database tanpa harus menuliskan syntax secara manual lewat MySQL..
    klo misal qta instal XAMPP,,trus masuk ke localhost/phpmyadmin disitu kan qta juga bisa create database dan create tabel’nya skalian to??tul gk mz??hehe..

  16. rosihanari says:

    @aan: bikin database dan tabel memang tidak harus via phpmyadmin, tapi bisa juga menjalankannya via script PHP. Jadi query untuk create tabel dan databasenya ditaruh di script PHP lantas dijalankan via browser.

  17. vera says:

    mas gimana cara nampilin jumlah data?
    tar output na misal laki=10
    perempuan=15
    nah script mysql (query) nampilin na gmn???



Tolong beri komentar donk!

Komentar Anda akan berguna untuk kemajuan blog ini.


Mohon maaf, komentar yang menggunakan email palsu atau komentar bernada negatif atau cemooh secara otomatis akan terhapus karena dianggap spam dan tidak akan tampil dalam daftar komentar.

Dimohon jangan pula memasukkan code program dalam bentuk apapun ke dalam komentar karena akan dianggap spam.

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word