Membuat Script PHP untuk Hapus Data dengan Multi Selection
May 8th, 2009 | by rosihanari |
Cetak Artikel Ini
Pernahkah Anda membuat script untuk menghapus data dengan konsep multi selection? Untuk menghapus sebuah data sih.. saya kira mudah untuk membuatnya. Pembahasan tentang hal ini telah saya kupas tuntas di artikel sebelumnya.
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:
CREATE TABLE mhs ( nim varchar(10), namamhs varchar(30), PRIMARY KEY (nim) )
INSERT INTO mhs VALUES ('M0197001', 'ROSIHAN ARI YUANA');
INSERT INTO mhs VALUES ('M0197002', 'DWI AMALIA FITRIANI');
INSERT INTO mhs VALUES ('M0197003', 'FAZA FAUZAN KH.');
INSERT INTO mhs VALUES ('M0197004', 'NADA HASANAH');
INSERT INTO mhs VALUES ('M0197005', 'MUH. AHSANI TAQWIM');
Langkah pertama dalam membuat script penghapusan data ini, terlebih dahulu kita siapkan script untuk menampilkan semua datanya. Untuk setiap data nantinya kita letakkan sebuah checkbox di depannya yang digunakan untuk memilih data mana saja yang akan dihapus.
data.php
<html>
<head>
<title>Hapus data mahasiswa</title>
</head>
<body>
<h1>Hapus Data Mahasiswa</h1>
<?php
// koneksi mysql
mysql_connect("dbhost", "dbuser", "dbpass");
mysql_select_db("dbname");
// query SQL untuk menampilkan semua data
$query = "SELECT * FROM mhs";
$hasil = mysql_query($query);
// membuat form penghapusan data
echo "<form name='myform' method='post' action='".$_SERVER['PHP_SELF']."?action=del'>";
echo "<table border='1'>";
echo "<tr><td></td><td><b>NIM</b></td><td><b>Nama Mahasiswa</b></td></tr>";
$i = 0;
while($data = mysql_fetch_array($hasil))
{
echo "<tr><td><input type='checkbox' name='nim".$i."' value='".$data['nim']."' /></td><td>".$data['nim']."</td><td>".$data['namamhs']."</td></tr>";
$i++;
}
echo "</table>";
echo "<input type='hidden' name='n' value='".$i."' />";
echo "<p><input type='submit' value='Hapus' name='submit'> <input type='reset' value='Batal' name='reset'></p>";
echo "</form>";
?>
</body>
</html>
Perhatikan script di atas! Form nantinya akan diarahkan ke script itu sendiri (menggunakan $_SERVER['PHP_SELF']) namun dengan parameter ‘?action=del’. Anda boleh arahkan pemrosesan formnya ke script lain. It’s up to you.
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
<html>
<head>
<title>Hapus data mahasiswa</title>
<script type="text/javascript">
function pilihan()
{
// membaca jumlah komponen dalam form bernama 'myform'
var jumKomponen = document.myform.length;
// jika checkbox 'Pilih Semua' dipilih
if (document.myform[0].checked == true)
{
// semua checkbox pada data akan terpilih
for (i=1; i<=jumKomponen; i++)
{
if (document.myform[i].type == "checkbox") document.myform[i].checked = true;
}
}
// jika checkbox 'Pilih Semua' tidak dipilih
else if (document.myform[0].checked == false)
{
// semua checkbox pada data tidak dipilih
for (i=1; i<=jumKomponen; i++)
{
if (document.myform[i].type == "checkbox") document.myform[i].checked = false;
}
}
}
</script>
</head>
<body>
<h1>Hapus Data Mahasiswa</h1>
<?php
// koneksi mysql
mysql_connect("dbhost", "dbuser", "dbpass");
mysql_select_db("dbname");
// query SQL untuk menampilkan semua data
$query = "SELECT * FROM mhs";
$hasil = mysql_query($query);
// membuat form penghapusan data
echo "<form name='myform' method='post' action='".$_SERVER['PHP_SELF']."?action=del'>";
echo "<table border='1'>";
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>";
$i = 0;
while($data = mysql_fetch_array($hasil))
{
echo "<tr><td><input type='checkbox' name='nim".$i."' value='".$data['nim']."' /></td><td>".$data['nim']."</td><td>".$data['namamhs']."</td></tr>";
$i++;
}
echo "</table>";
echo "<input type='hidden' name='n' value='".$i."' />";
echo "<p><input type='submit' value='Hapus' name='submit'> <input type='reset' value='Batal' name='reset'></p>";
echo "</form>";
?>
</body>
</html>
Nah… selanjutnya, kita bisa membuat bagian untuk memproses formnya atau membuat script untuk proses penghapusan datanya.
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
if (isset($_POST['nim'.$i]))
{
...
}
dengan $i = 0, 1, …, n-1.
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
<html>
<head>
<title>Hapus data mahasiswa</title>
<script type="text/javascript">
function pilihan()
{
// membaca jumlah komponen dalam form bernama 'myform'
var jumKomponen = document.myform.length;
// jika checkbox 'Pilih Semua' dipilih
if (document.myform[0].checked == true)
{
// semua checkbox pada data akan terpilih
for (i=1; i<=jumKomponen; i++)
{
if (document.myform[i].type == "checkbox") document.myform[i].checked = true;
}
}
// jika checkbox 'Pilih Semua' tidak dipilih
else if (document.myform[0].checked == false)
{
// semua checkbox pada data tidak dipilih
for (i=1; i<=jumKomponen; i++)
{
if (document.myform[i].type == "checkbox") document.myform[i].checked = false;
}
}
}
</script>
</head>
<body>
<h1>Hapus Data Mahasiswa</h1>
<?php
// koneksi mysql
mysql_connect("dbhost", "dbuser", "dbpass");
mysql_select_db("dbname");
// bagian script untuk menghapus data
if ($_GET['action'] == "del")
{
// membaca nilai n dari hidden value
$n = $_POST['n'];
for ($i=0; $i<=$n-1; $i++)
{
if (isset($_POST['nim'.$i]))
{
$nim = $_POST['nim'.$i];
$query = "DELETE FROM mhs WHERE nim = '$nim'";
mysql_query($query);
}
}
}
// query SQL untuk menampilkan semua data
$query = "SELECT * FROM mhs";
$hasil = mysql_query($query);
// membuat form penghapusan data
echo "<form name='myform' method='post' action='".$_SERVER['PHP_SELF']."?action=del'>";
echo "<table border='1'>";
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>";
$i = 0;
while($data = mysql_fetch_array($hasil))
{
echo "<tr><td><input type='checkbox' name='nim".$i."' value='".$data['nim']."' /></td><td>".$data['nim']."</td><td>".$data['namamhs']."</td></tr>";
$i++;
}
echo "</table>";
echo "<input type='hidden' name='n' value='".$i."' />";
echo "<p><input type='submit' value='Hapus' name='submit'> <input type='reset' value='Batal' name='reset'></p>";
echo "</form>";
?>
</body>
</html>
Gimana mudah bukan membuatnya? selamat mencoba ya… Jangan lupa kritik dan sarannya tentang artikel ini dan juga blog ini secara keseluruhan. Bila ada kendala, silakan tulis di komentar di bawah ini dan kita akan diskusikan. Okay?
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
- Ide Membuat Script PHP untuk Pencarian dengan Multi Kategori
- Membuat Auto Deletion (Hapus Otomatis) Data Dengan Script PHP
- Teknik Submit Data Melalui Multi Form
- Script PHP untuk Edit Data dengan Komponen RadioButton pada Form
- Script Cari Data File Yang Terupload Ke MySQL
- Membuat Script PHP untuk Rekap Data dari Data Mentah
- Script Multiple File Upload Dengan PHP
- Alternatif Cara Membuat Form Dinamis Untuk Submit Data Secara Simultan
- Alternatif Script Untuk Memproses Input Data Form Dinamis
- Script PHP untuk Mengedit Data Via Form
Share this article on:
Kata kunci: checkbox - hapus - multi selection -






Wah.. thanks banget.. aku dapat ilmu baru lagi.. nie.. makasih ya..
thanks mas buat smua shraing code phpnya..
wah, terimakasih banyak, tugas saya kelar karena bantuan anda… trims…. matur suwun, nuhun, thanks
Postingan terakhir si rizal di blognya: 10 orang IT terkaya di Dunia
Kalau kbalikannya gimana pak dosen? misalnya kasusnya dalam 1 form isinya 1 mahasiswa memilih beberapa matakuliah tapi dengan multiselection kemudian diinsert ke database,
minta petunujuknya, makasih
to daun hijau: coba baca artikel saya di http://blog.rosihanari.net/membuat-checkbox-dinamis-dan-pemrosesannya/
Betul2x blog yang sarat dengan ilmu… terimakasih pak atas sharing ilmunya… Semoga makin berkah ilmunya… Amin
thank’s bgt… mdh2 gnerasi berikutnya saya yg bagi2 ilmu
makasih bgt pak…modul yang ada disini sangat membantu untuk pembuatan web (tugas magang) saya…
maav pak saya tidak berhasil menggunakan script diatas. Karena waktu sudah di seleksi trus di klik tombol hapusnya harus berpindah ke halaman lain. Sedangkan script di atas itu hanya pada halaman itu sendiri. Jadi mohon bantuannya.
Yach article hapus multi selection ini yang selama ini saya cari, karena kalau kita hapus satu persatu, sedangkan datanya banyak capek deh!!
Ok Terima kasih Pak Rosihan Ari atas ilmunya yang dibagikan gratis, semoga terus bertambah
diatas tabel kok muncul “Notice: Undefined index: action in C:\wamp\www\erp\tes3.php on line 45″
mohon pencerahannya,
diatas tabelnya kok muncul “Notice: Undefined index: action in C:\wamp\www\erp\tes3.php on line 45″, mohon pencerahannya,
mas..maksud saya dengan tombol
kalo bisa dengan tombol submit….
trus data yang ingin saya barcode,saya centang trus saya barcode..kira” pake apa mas…??klo pake multi selection bisa g mas….?
dan script nya seperti apa yah mas..?
thanx…
@gery: wah kalo diminta membuatkan scriptnya saya agak repot mas dan gak sempet. Saya hanya bisa menjelaskan idenya.
Tampilkan list buku yang belum dicetak barcodenya. Untuk menandai data buku mana yang sudah dicetak barcodenya dan yg belum, sebaiknya buat sebuah field pada tabel buku misal ‘statusCetak’. Jika sudah dicetak misal nilainya ‘statusCetak’ adalah 1 dan yang belum nilainya 0. Sehingga untuk menampilkan list buku yang belum dicetak barcodenya cukup menggunakan query SELECT berdasarkan ‘statusCetak’ = 0. List tersebut ditampilkan dalam bentuk multi selection seperti artikel di atas
Kemudian bila user telah memilih buku2 yang mau dicetak barcodenya pada list tersebut, maka buat script untuk memprosesnya dari hasil multiselection. Konsepnya sama persis dengan artikel di atas, namun proses anda adalah mencetak ID buku dalam bentuk barcode.
Jangan lupa setelah mengklik tombol submit ketika mencetak barcode, ubahlah ‘statusCetak’ buku-buku yang dipilih/dicetak menjadi 1 pada tabel bukunya.
Pak mo tanya, bagaimana kalo saya justru ingin menginputkan semua item dengan banyak kolom checkbox item, jadi yang saya check datanya tersimpan bernilai 1 tapi yang tidak saya check tetap tersimpan tapi bernilai 0..? Apakah boleh bertanya lewat e-mail…?
Mohon solusinya Pak dari permasalahan di atas.
Trima kasih sebelumnya
ok…thanx yah atas penjelasanya…….
bagus..
need some inspiration
Ass, maaf mas bisa gak kalau pake link jadi gak pake input type submit ataupun button, jadi kayak di joomla, terimakasih. Wss
saya agak bingung dengan javascriptnya, dalam hal ini hanya ada 2 kondisi yaitu jika tombol cekbox dipilih semua atau tidak, kenapa harus pakai if…else if…(selesai), bukankah seharusnya else saja, karena hanya 2 kondisi, betul…saya mau tanya kalau dengan switch bagaimana? dan mana yang lebih praktis…
@andika: ya.. itu bisa juga mas. Mengapa di situ saya buat if di bagian else nya supaya pembaca lebih mudah memahami kondisinya. Tapi malah bikin bingung ya?
kalau di buat sistem update gimana ya pak…terima kasih sebelumnya
ass..
Pak, saya coba scriptnya, tp sll muncul error ‘Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in… on line 75′
Knapa ya, pak? Mohon penjelasannya.
Terima kasih
@rans: anda memakai PHP versi berapa bu? coba diganti seperti ini koneksinya
$koneksi = mysql_connect(…);
$query = “…..”;
$hasil = mysql_query($query, $koneksi);
terima kasih pak, dah bisa
pak. ada contoh pembuatannya untuk select dan insert data gk ?
di coba ya scriptnya… tenkyu berat nih…
pak.. klo seandai nya mo hapus berdasarkan kelompok gimana ya?? misalkan sadam 1 kelompok ada 10 anggota, dan apabila nama kelompoknya di hapus maka, semua anggotanya juga ikut terhapus…!!
terimakasi pak atas penjelasannya…!
pak script yang diatas kan datanya dari database klo misalnya datanya hasil dari input php bisa g pak???
matur nuwun…
assalamu’alaikum pak dosen..
pada skrip ini bisa diberi kaya session untuk login g ya?? trus di letakkan sebelah mana pak??
kebanyakan kan yang menghapus data harus orang yang berwenang atau diberi kewenangan..
terima kasih sourcenya bermanfaat
wassalam
@rozikin: coba baca http://blog.rosihanari.net/ide-membuat-script-upload-download-file-dengan-batasan-hak-akses mas…. konsepnya sama spt yang saya bahas di artikel tsb.
trima kasih…
Makasih mas….sangat bermanfaat….
ijin copas ya mas….
pak… kalo kasus deletenya dengan tabel yg dibuat dengan paging bagaimana
@irvan: coba anda cari di blog ini dengan keyword ‘script hapus data’