↑ Return to Buku PHP & MySQL

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

Setelah beberapa waktu yang lalu saya memposting artikel tentang cara hapus data secara simultan dengan teknik multi selection [1] dan insert data secara simultan menggunakan komponen checkbox [2], kali ini saya akan coba memposting artikel bagaimana proses update data secara simultan.

Ada seorang member saya [3], 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

CREATE TABLE mhs (
nim varchar(10),
namamhs varchar(30),
alamat text,
sex varchar(10),
PRIMARY KEY(nim)
);

CREATE TABLE mk (
kodemk varchar(5),
namamk varchar(20),
sks int(11),
smt int(11),
PRIMARY KEY(kodemk)
);

CREATE TABLE ambilmk (
nim varchar(10),
kodemk varchar(5),
nilai float,
PRIMARY KEY(nim,kodemk)
);

INSERT INTO mhs VALUES (‘M0197001’, ‘ROSIHAN ARI YUANA’, ‘COLOMADU’, ‘L’);
INSERT INTO mhs VALUES (‘M0197002’, ‘DWI AMALIA FITRIANI’, ‘KUDUS’, ‘P’);
INSERT INTO mhs VALUES (‘M0197003’, ‘FAZA FAUZAN KH.’, ‘COLOMADU’, ‘L’);
INSERT INTO mhs VALUES (‘M0197004’, ‘NADA HASANAH’, ‘COLOMADU’, ‘P’);
INSERT INTO mhs VALUES (‘M0197005’, ‘MUH. AHSANI TAQWIM’, ‘COLOMADU’, ‘L’);

INSERT INTO mk VALUES (‘K001’, ‘KALKULUS II’, 3, 4);
INSERT INTO mk VALUES (‘K004’, ‘NUMERIK’, 3, 4);

INSERT INTO ambilmk VALUES (‘M0197001’, ‘K001’, 0);
INSERT INTO ambilmk VALUES (‘M0197002’, ‘K001’, 0);
INSERT INTO ambilmk VALUES (‘M0197003’, ‘K001’, 0);
INSERT INTO ambilmk VALUES (‘M0197004’, ‘K001’, 0);
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

Pilih Mata Kuliah :

<?php
// query untuk menampilkan semua matakuliah dari tabel 'mk'
$query = "SELECT * FROM mk";
$hasil = mysql_query($query);
while ($data = mysql_fetch_array($hasil))
{
echo "”.$data[‘namamk’].””;
}
?>

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

Update Nilai

<?php
mysql_connect("dbhost", "dbuser", "dbpass");
mysql_select_db("dbname");

// membaca kode matakuliah yang disubmit dari formnilai.php
$kodeMK = $_POST['mk'];

// menampilkan data nim dan nilai mahasiswa yang mengambil matakuliah berdasarkan kode MK
$query = "SELECT nim, nilai FROM ambilmk WHERE kodemk = '$kodeMK'";

$hasil = mysql_query($query);

// inisialisasi counter
$i = 1;
while ($data = mysql_fetch_array($hasil))
{
echo "

“;
$i++;
}
$jumMhs = $i-1;
?>

No NIM Nilai
“.$i.” “.$data[‘nim’].”

<input type="hidden" name="n" value="” />
<input type="hidden" name="kodemk" value="”>

Keterangan:

Perintah 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

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=”” />. 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

<?php
mysql_connect("dbhost", "dbuser", "dbpass");
mysql_select_db("dbname");

// membaca jumlah mahasiswa (n) dari submit.php
$jumMhs = $_POST['n'];

// membaca kode MK yang akan diupdate
$kodeMK = $_POST['kodemk'];

// proses looping untuk membaca nilai dan nim mahasiswa dari form, serta menjalankan query update
for ($i=1; $i<=$n; $i++)
{
// membaca nim mahasiswa ke-i, i = 1, 2, 3, …, n
$nimMhs = $_POST['mhs'.$i];

// membaca nilai mahasiswa ke-i, i = 1, 2, 3, …, n
$nilai = $_POST['nilai'.$i];

// update nilai mahasiswa ke-i, i = 1, 2, 3, …, n
$query = "UPDATE ambilmk SET nilai = $nilai WHERE nim = '$nimMhs' AND kodemk = '$kodeMK'";
mysql_query($query);
}

echo "

Update nilai sukses

“;

?>

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?

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Captcha Garb (1.5)