My ikn

1

Script PHP Updating Data Secara Simultan (Studi Kasus Update Nilai Kuliah Mahasiswa)

Minggu, 20 Mei 2012
Share this Article on :
Free SMS
Setelah beberapa waktu yang lalu saya memposting artikel tentang cara hapus data secara simultan dengan teknik multi selection dan insert data secara simultan menggunakan komponen checkbox, kali ini saya akan coba memposting artikel bagaimana proses update data secara simultan.
Ada seorang member saya, mas Christ, menanyakan sebuah kasus. Dalam kasusnya diceritakan bahwa ia ingin membuat aplikasi untuk keperluan update nilai siswa. Namun dia tidak ingin proses update nilainya satu-persatu, namun bisa secara simultan sekaligus. Proses ini terjadi ketika dalam proses entri nilai mata pelajaran.
Perlu diketahui bahwa ketika siswa mengambil pelajaran, terlebih dahulu data siswa dan mata pelajaran yang diikutinya disimpan ke dalam database, namun belum ada nilainya (nilainya 0). Begitu nilai sudah ada dan ingin diinputkan, maka proses updatelah yang terjadi. Nah… saudara Christ ini menghendaki proses updatenya bisa dilakukan sekaligus secara simultan dan tidak satu-satu. Kalau satu-satu jadi repot, apalagi kalau jumlah siswanya banyak.
So… dalam artikel ini akan dibahas teknik atau ide untuk membuat aplikasi seperti yang dimaksud oleh member saya tersebut, namun dengan sedikit modifikasi dalam kasusnya. Kali ini saya ambil kasus proses update nilai kuliah mahasiswa. Ya… supaya lebih mudah saja saya memahaminya, karena saya orang kampus kalee :-) Nggak… kok just kidding, saya pilih kasus ini karena dalam komputer saya sudah ada tabel dan data terkait dengan hal ini. Jadi gak perlu repot-repot bikin tabel dan data baru. Tapi yang jelas konsepnya sama seperti yang diinginkan mas Christ kok.

Untuk keperluan pembahasannya dalam studi kasus ini, kita siapkan terlebih dahulu tabel dan datanya
1.CREATE TABLE mhs (
2.nim varchar(10),
3.namamhs varchar(30),
4.alamat text,
5.sex varchar(10),
6.PRIMARY KEY(nim)
7.);
1.CREATE TABLE mk (
2.kodemk varchar(5),
3.namamk varchar(20),
4.sks int(11),
5.smt int(11),
6.PRIMARY KEY(kodemk)
7.);
1.CREATE TABLE ambilmk (
2.nim varchar(10),
3.kodemk varchar(5),
4.nilai float,
5.PRIMARY KEY(nim,kodemk)
6.);
1.INSERT INTO mhs VALUES ('M0197001', 'ROSIHAN ARI YUANA', 'COLOMADU', 'L');
2.INSERT INTO mhs VALUES ('M0197002', 'DWI AMALIA FITRIANI', 'KUDUS', 'P');
3.INSERT INTO mhs VALUES ('M0197003', 'FAZA FAUZAN KH.', 'COLOMADU', 'L');
4.INSERT INTO mhs VALUES ('M0197004', 'NADA HASANAH', 'COLOMADU', 'P');
5.INSERT INTO mhs VALUES ('M0197005', 'MUH. AHSANI TAQWIM', 'COLOMADU', 'L');
1.INSERT INTO mk VALUES ('K001', 'KALKULUS II', 3, 4);
2.INSERT INTO mk VALUES ('K004', 'NUMERIK', 3, 4);
1.INSERT INTO ambilmk VALUES ('M0197001', 'K001', 0);
2.INSERT INTO ambilmk VALUES ('M0197002', 'K001', 0);
3.INSERT INTO ambilmk VALUES ('M0197003', 'K001', 0);
4.INSERT INTO ambilmk VALUES ('M0197004', 'K001', 0);
5.INSERT INTO ambilmk VALUES ('M0197005', 'K004', 0);
Perhatikan pada sampel tabel dan data di atas bahwa, misalkan hanya terdapat 2 matakuliah yang ada (Kalkulus II dan Numerik). Sedangkan mahasiswa yang mengambil ‘Kalkulus II’ ada 4 orang yaitu yang bernim ‘M0197001′, ‘M0197002′, ‘M0197003′, dan ‘M0197004′. Tampak pula bahwa nilai matakuliah tersebut untuk keempat mahasiswa adalah masih 0 (belum diinputkan nilainya).
Selanjutnya kita coba desain skenario untuk proses update nilai secara simultan ini. Skenario pertama adalah memilih nama matakuliah yang akan kita update nilainya (lihat gambar di bawah ini)
Photobucket
Setelah dipilih nama matakuliah, akan muncul daftar form nilai untuk semua mahasiswa yang mengambil matakuliah tersebut. Nah.. di form inilah kita kan lakukan proses entri nilai atau edit nilai untuk mahasiswanya.
Photobucket
Photobucket
Contoh tampilan di atas menggambarkan proses update nilai mahasiswa yang mengambil ‘Kalkulus II’
OK.. skenario sudah, berikutnya kita mulai buat aplikasinya.
Pertama kita buat form untuk memilih nama matakuliahnya terlebih dahulu.
formnilai.php
01.<?php
02.// koneksi ke mysql
03.mysql_connect("dbhost", "dbuser", "dbpass");
04.mysql_select_db("dbname");
05.?>
06. 
07.<form method="post" action="submit.php">
08.Pilih Mata Kuliah :
09.<select name="mk">
10.<?php
11.// query untuk menampilkan semua matakuliah dari tabel 'mk'
12.$query = "SELECT * FROM mk";
13.$hasil = mysql_query($query);
14.while ($data = mysql_fetch_array($hasil))
15.{
16.echo "<option value='".$data['kodemk']."'>".$data['namamk']."</option>";
17.}
18.?>
19.<input type="submit" value="Submit" name="submit" />
20.</select>
21.</form>
Keterangan:
Nilai yang disubmit oleh form di atas menuju submit.php adalah kode matakuliahnya.
Selanjutnya kita buat script submit.php. Script ini nanti akan memunculkan form update nilai untuk semua mahasiswa yang mengambil matakuliah yang dipilih dari formnilai.php
submit.php
01.<h1>Update Nilai</h1>
02. 
03.<form method="post" action="update.php">
04.<table border="1">
05.<tr><td>No</td><td>NIM</td><td>Nilai</td></tr>
06. 
07.<?php
08.mysql_connect("dbhost", "dbuser", "dbpass");
09.mysql_select_db("dbname");
10. 
11.// membaca kode matakuliah yang disubmit dari formnilai.php
12.$kodeMK = $_POST['mk'];
13. 
14.// menampilkan data nim dan nilai mahasiswa yang mengambil matakuliah berdasarkan kode MK
15.$query = "SELECT nim, nilai FROM ambilmk WHERE kodemk = '$kodeMK'";
16. 
17.$hasil = mysql_query($query);
18. 
19.// inisialisasi counter
20.$i = 1;
21.while ($data = mysql_fetch_array($hasil))
22.{
23.echo "<tr><td>".$i."</td><td>".$data['nim']."</td><td><input type='hidden' name='mhs".$i."' value='".$data['nim']."' />
24.<input type='text' name='nilai".$i."' value='".$data['nilai']."' /></td></tr>";
25.$i++;
26.}
27.$jumMhs = $i-1;
28.?>
29.</table><br />
30.<input type="hidden" name="n" value="<?php echo $jumMhs ?>" />
31.<input type="hidden" name="kodemk" value="<?php echo $kodeMK;?>">
32.<input type="submit" value="Update" name="submit" />
33.</form>
Keterangan:
Perintah <input type=’hidden’ name=’mhs”.$i.”‘ value=’”.$data['nim'].”‘ /> digunakan untuk membuat komponen hidden yang berisi nim mahasiswa yang mengambil matakuliah tersebut. NIM ini nantinya akan ikut disubmit ketika proses updating nilai. Mengapa NIM perlu disubmit ketika proses updating nilai? ya… karena NIM akan diperlukan dalam query SQL update nilai yang berbentuk
1.UPDATE ambilmk SET nilai = ... WHERE nim = ... AND kodemk = ...
Query SQL di atas nanti akan diletakkan dalam script update.php
Dalam script di atas terdapat pula perintah <input type=”hidden” name=”n” value=”<?php echo $jumMhs ?>” />. Nilai ‘n’ ini nanti akan ikut disubmit untuk proses looping dalam membaca semua nilai dan NIM yang berasal dari form sekaligus menjalankan query SQL update data. Proses pembacaan dan menjalankan query update data ini dilakukan sebanyak n kali (sebanyak jumlah mahasiswa yang mengambil).
Terakhir… kita buat script update.php nya
update.php
01.<?php
02.mysql_connect("dbhost", "dbuser", "dbpass");
03.mysql_select_db("dbname");
04. 
05.// membaca jumlah mahasiswa (n) dari submit.php
06.$jumMhs = $_POST['n'];
07. 
08.// membaca kode MK yang akan diupdate
09.$kodeMK = $_POST['kodemk'];
10. 
11.// proses looping untuk membaca nilai dan nim mahasiswa dari form, serta menjalankan query update
12.for ($i=1; $i<=$n; $i++)
13.{
14.// membaca nim mahasiswa ke-i, i = 1, 2, 3, ..., n
15.$nimMhs = $_POST['mhs'.$i];
16. 
17.// membaca nilai mahasiswa ke-i, i = 1, 2, 3, ..., n
18.$nilai  = $_POST['nilai'.$i];
19. 
20.// update nilai mahasiswa ke-i, i = 1, 2, 3, ..., n
21.$query = "UPDATE ambilmk SET nilai = $nilai WHERE nim = '$nimMhs' AND kodemk = '$kodeMK'";
22.mysql_query($query);
23.}
24. 
25.echo "<h2>Update nilai sukses</h2>";
26. 
27.?>

Nah… mudah dan simpel bukan membuatnya?
Dalam kasus yang nyata, tentu struktur tabel dan datanya tidak sesimpel yang saya bahas di atas namun kemungkinan jauh lebih kompleks. Di sini saya hanya memberikan ide dan konsep dasarnya saja untuk proses update data secara simultan. Untuk selanjutnya silakan Anda kembangkan sendiri sesuai kasus yang Anda hadapi masing-masing. OK?


Artikel Terkait:

1 komentar:

Unknown mengatakan...

lanjutkan gan tutornya

Posting Komentar