Tapi… bagaimana bila data yang akan dihapus lebih dari satu sekaligus? Rumit gak ya membuat scriptnya? Hmm… nggak rumit kok, cuman sedikit memusingkan saja he.. he.. he nggak ding, becanda… mudah-mudahan artikel yang saya sajikan ini tidak membuat Anda pusing.
OK… konsep menghapus data dengan multi selection ini biasanya menggunakan bantuan komponen checkbox. Mengapa checkbox? ya.. karena komponen checkbox memungkinkan kita bisa memilih pilihan lebih dari satu.
Data yang akan dihapus terlebih dahulu dipilih dengan memberi tanda check pada checkbox yang ada di depan setiap data. Perhatikan contoh tampilan berikut ini:
Nah… kita akan membuat script PHP untuk menghapus data dengan konsep multi selection seperti gambaran di atas.
Untuk studi kasus yang diambil, lagi-lagi kita mengambil kasus tentang data mahasiswa Huh… mentang-mentang yang buat artikel ini seorang dosen kali ya
Misalkan kita punya tabel dan data sbb:
1.
CREATE
TABLE
mhs (
2.
nim
varchar
(10),
3.
namamhs
varchar
(30),
4.
PRIMARY
KEY
(nim)
5.
)
1.
INSERT
INTO
mhs
VALUES
(
'M0197001'
,
'ROSIHAN ARI YUANA'
);
2.
INSERT
INTO
mhs
VALUES
(
'M0197002'
,
'DWI AMALIA FITRIANI'
);
3.
INSERT
INTO
mhs
VALUES
(
'M0197003'
,
'FAZA FAUZAN KH.'
);
4.
INSERT
INTO
mhs
VALUES
(
'M0197004'
,
'NADA HASANAH'
);
5.
INSERT
INTO
mhs
VALUES
(
'M0197005'
,
'MUH. AHSANI TAQWIM'
);
data.php
01.
<html>
02.
<head>
03.
<title>Hapus data mahasiswa</title>
04.
</head>
05.
<body>
06.
<h1>Hapus Data Mahasiswa</h1>
07.
<?php
08.
09.
// koneksi mysql
10.
11.
mysql_connect(
"dbhost"
,
"dbuser"
,
"dbpass"
);
12.
mysql_select_db(
"dbname"
);
13.
14.
// query SQL untuk menampilkan semua data
15.
16.
$query
=
"SELECT * FROM mhs"
;
17.
$hasil
= mysql_query(
$query
);
18.
19.
// membuat form penghapusan data
20.
21.
echo
"<form name='myform' method='post' action='"
.
$_SERVER
['PHP_SELF
']."?action=del'
>";
22.
echo
"<table border='1'>"
;
23.
echo
"<tr><td></td><td><b>NIM</b></td><td><b>Nama Mahasiswa</b></td></tr>"
;
24.
$i
= 0;
25.
while
(
$data
= mysql_fetch_array(
$hasil
))
26.
{
27.
echo
"<tr><td><input type='checkbox' name='nim"
.
$i
.
"' value='"
.
$data
['nim
']."'
/></td><td>".
$data
[
'nim'
].
"</td><td>"
.
$data
[
'namamhs'
].
"</td></tr>"
;
28.
$i
++;
29.
}
30.
echo
"</table>"
;
31.
echo
"<input type='hidden' name='n' value='"
.
$i
.
"' />"
;
32.
echo
"<p><input type='submit' value='Hapus' name='submit'> <input type='reset' value='Batal' name='reset'></p>"
;
33.
echo
"</form>"
;
34.
?>
35.
36.
</body>
37.
</html>
Selain itu perhatikan pula bahwa untuk setiap komponen checkbox diberikan name yang berbeda. Di sini diberikan name berbentuk ‘nim0′, ‘nim1′, ‘nim2′, … dst (perhatikan bagian name=’nim”.$i.”‘).
Kemudian, terdapat pula komponen hidden value (name=’n') yang bernilai sama dengan jumlah data total atau dalam hal ini adalah $i. Komponen ini nantinya akan sangat penting ketika memproses form terutama pada saat membaca komponen checkbox yang dipilih.
Selanjutnya untuk pemanis, misalkan kita ingin membuat fasilitas SELECT ALL untuk memilih semua data sekaligus. OK Bagaimana caranya? Ya.. kita gunakan Javascript. Oya… jangan lupa berikan sebuah checkbox tambahan untuk memberikan fasilitas ini. Begitu checkbox ini dipilih, maka semua checkbox yang ada di depan data akan terpilih. Untuk hal ini, kita berikan event onclick() pada checkbox tsb. Mmm… sebaiknya checkbox ini diletakkan di dalam header tabel saja ya.
data.php
01.
<html>
02.
<head>
03.
<title>Hapus data mahasiswa</title>
04.
<script type=
"text/javascript"
>
05.
06.
function
pilihan()
07.
{
08.
// membaca jumlah komponen dalam form bernama 'myform'
09.
var
jumKomponen = document.myform.length;
10.
11.
// jika checkbox 'Pilih Semua' dipilih
12.
if
(document.myform[0].checked == true)
13.
{
14.
// semua checkbox pada data akan terpilih
15.
for
(i=1; i<=jumKomponen; i++)
16.
{
17.
if
(document.myform[i].type ==
"checkbox"
) document.myform[i].checked = true;
18.
}
19.
}
20.
// jika checkbox 'Pilih Semua' tidak dipilih
21.
else
if
(document.myform[0].checked == false)
22.
{
23.
// semua checkbox pada data tidak dipilih
24.
for
(i=1; i<=jumKomponen; i++)
25.
{
26.
if
(document.myform[i].type ==
"checkbox"
) document.myform[i].checked = false;
27.
}
28.
}
29.
}
30.
31.
</script>
32.
</head>
33.
<body>
34.
<h1>Hapus Data Mahasiswa</h1>
35.
<?php
36.
37.
// koneksi mysql
38.
39.
mysql_connect(
"dbhost"
,
"dbuser"
,
"dbpass"
);
40.
mysql_select_db(
"dbname"
);
41.
42.
// query SQL untuk menampilkan semua data
43.
44.
$query
=
"SELECT * FROM mhs"
;
45.
$hasil
= mysql_query(
$query
);
46.
47.
// membuat form penghapusan data
48.
49.
echo
"<form name='myform' method='post' action='"
.
$_SERVER
['PHP_SELF
']."?action=del'
>";
50.
echo
"<table border='1'>"
;
51.
echo
"<tr><td><input type='checkbox' name='pilih' onclick='pilihan()' /> Pilih semua</td><td><b>NIM</b></td><td><b>Nama Mahasiswa</b></td></tr>"
;
52.
$i
= 0;
53.
while
(
$data
= mysql_fetch_array(
$hasil
))
54.
{
55.
echo
"<tr><td><input type='checkbox' name='nim"
.
$i
.
"' value='"
.
$data
['nim
']."'
/></td><td>".
$data
[
'nim'
].
"</td><td>"
.
$data
[
'namamhs'
].
"</td></tr>"
;
56.
$i
++;
57.
}
58.
echo
"</table>"
;
59.
echo
"<input type='hidden' name='n' value='"
.
$i
.
"' />"
;
60.
echo
"<p><input type='submit' value='Hapus' name='submit'> <input type='reset' value='Batal' name='reset'></p>"
;
61.
echo
"</form>"
;
62.
?>
63.
64.
</body>
65.
</html>
Trus… bagaimana konsep membaca data mana saja yang akan dihapus sesuai pilihan checkboxnya? Untuk membaca data mana yang akan dihapus, kita gunakan bantuan looping. Berapa jumlah loopingnya? Jumlah loopingnya sesuai jumlah komponen checkboxnya. Nah… di sinilah pentingnya penggunaan komponen hidden value <input type=’hidden’ name=’n’ value=’”.$i.”‘ /> Dalam contoh ini nilai n=5.
Selanjutnya isi dalam loopingnya bagaimana? ya… kita cek saja apakah komponen checkbox dengan name=’nim0′ dipilih tidak? jika ya, maka baca NIM mahasiswa terkait dengan komponen tersebut, lalu jalankan query SQL untuk menghapus data mahasiswanya. Trus… komponen checkbox dengan name=’nim1′ dicek apakah dipilih atau tidak. Jika ya, maka baca NIM mahasiswa terkait dengan komponen tersebut, lalu hapus dengan query SQL. Proses ini diulang sebanyak 5 kali untuk kasus di atas, yaitu mulai dari komponen checkbox dengan name=’nim0′ sampai dengan name=’nim4′.
Lantas yang menjadi masalah adalah, bagaimana cara kita mendeteksi bahwa komponen checkbox dengan name tertentu itu dipilih atau tidak? caranya adalah kita gunakan statement IF seperti di bawah ini
1.
if
(isset(
$_POST
[
'nim'
.
$i
]))
2.
{
3.
...
4.
}
Jika suatu komponen checkbox itu dipilih, maka perintah isset($_POST['nim'.$i]) akan menghasilkan nilai TRUE. Sedangkan FALSE jika tidak dipilih.
Dengan demikian, script untuk menghapus data dengan multi selection ini adalah sbb:
data.php
01.
<html>
02.
<head>
03.
<title>Hapus data mahasiswa</title>
04.
<script type=
"text/javascript"
>
05.
06.
function
pilihan()
07.
{
08.
// membaca jumlah komponen dalam form bernama 'myform'
09.
var
jumKomponen = document.myform.length;
10.
11.
// jika checkbox 'Pilih Semua' dipilih
12.
if
(document.myform[0].checked == true)
13.
{
14.
// semua checkbox pada data akan terpilih
15.
for
(i=1; i<=jumKomponen; i++)
16.
{
17.
if
(document.myform[i].type ==
"checkbox"
) document.myform[i].checked = true;
18.
}
19.
}
20.
// jika checkbox 'Pilih Semua' tidak dipilih
21.
else
if
(document.myform[0].checked == false)
22.
{
23.
// semua checkbox pada data tidak dipilih
24.
for
(i=1; i<=jumKomponen; i++)
25.
{
26.
if
(document.myform[i].type ==
"checkbox"
) document.myform[i].checked = false;
27.
}
28.
}
29.
}
30.
31.
</script>
32.
</head>
33.
<body>
34.
<h1>Hapus Data Mahasiswa</h1>
35.
<?php
36.
37.
// koneksi mysql
38.
39.
mysql_connect(
"dbhost"
,
"dbuser"
,
"dbpass"
);
40.
mysql_select_db(
"dbname"
);
41.
42.
// bagian script untuk menghapus data
43.
44.
if
(
$_GET
[
'action'
] ==
"del"
)
45.
{
46.
// membaca nilai n dari hidden value
47.
$n
=
$_POST
[
'n'
];
48.
49.
for
(
$i
=0;
$i
<=
$n
-1;
$i
++)
50.
{
51.
if
(isset(
$_POST
[
'nim'
.
$i
]))
52.
{
53.
$nim
=
$_POST
[
'nim'
.
$i
];
54.
$query
=
"DELETE FROM mhs WHERE nim = '$nim'"
;
55.
mysql_query(
$query
);
56.
}
57.
}
58.
}
59.
60.
// query SQL untuk menampilkan semua data
61.
62.
$query
=
"SELECT * FROM mhs"
;
63.
$hasil
= mysql_query(
$query
);
64.
65.
// membuat form penghapusan data
66.
67.
echo
"<form name='myform' method='post' action='"
.
$_SERVER
['PHP_SELF
']."?action=del'
>";
68.
echo
"<table border='1'>"
;
69.
echo
"<tr><td><input type='checkbox' name='pilih' onclick='pilihan()' /> Pilih semua</td><td><b>NIM</b></td><td><b>Nama Mahasiswa</b></td></tr>"
;
70.
$i
= 0;
71.
while
(
$data
= mysql_fetch_array(
$hasil
))
72.
{
73.
echo
"<tr><td><input type='checkbox' name='nim"
.
$i
.
"' value='"
.
$data
['nim
']."'
/></td><td>".
$data
[
'nim'
].
"</td><td>"
.
$data
[
'namamhs'
].
"</td></tr>"
;
74.
$i
++;
75.
}
76.
echo
"</table>"
;
77.
echo
"<input type='hidden' name='n' value='"
.
$i
.
"' />"
;
78.
echo
"<p><input type='submit' value='Hapus' name='submit'> <input type='reset' value='Batal' name='reset'></p>"
;
79.
echo
"</form>"
;
80.
81.
?>
82.
83.
</body>
84.
</html>
Selamat mencoba...
Posting Komentar