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);
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)
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.
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>
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>
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 = ...
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?
1 komentar:
lanjutkan gan tutornya
Posting Komentar