Beli Modem Wavecom Untuk SMS Gateway. FREE E-book Gammu + FREE Ongkos kirim !!
Ingin Punya Script SMS Gateway dengan PHP + MySQL?

Dapatkan segera phpSMS V3.0, software SMS Gateway multi fungsi berbasis web buatan saya sendiri untuk keperluan Anda.
[Info Lengkap...]

Membuat Script PHP untuk Hapus Data dengan Multi Selection


May 8th, 2009 | by rosihanari | Cetak Artikel Ini 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:

Photobucket

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?

VN:F [1.9.4_1102]
Rating: 0.0/10 (0 votes cast)

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


Share this article on:

Kata kunci: checkbox - hapus - multi selection -


Ada 36 komentar dalam artikel ini.

  1. faris says:

    Wah.. thanks banget.. aku dapat ilmu baru lagi.. nie.. makasih ya..

  2. handoyo says:

    thanks mas buat smua shraing code phpnya..

  3. rizal says:

    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

  4. daun_hijau says:

    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

  5. yudi says:

    Betul2x blog yang sarat dengan ilmu… terimakasih pak atas sharing ilmunya… Semoga makin berkah ilmunya… Amin

  6. a2yuanda says:

    thank’s bgt… mdh2 gnerasi berikutnya saya yg bagi2 ilmu

  7. nur says:

    makasih bgt pak…modul yang ada disini sangat membantu untuk pembuatan web (tugas magang) saya…

  8. Lindra_tanya says:

    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.

  9. siswoutomo says:

    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

  10. angga says:

    diatas tabel kok muncul “Notice: Undefined index: action in C:\wamp\www\erp\tes3.php on line 45″
    mohon pencerahannya,

  11. angga says:

    diatas tabelnya kok muncul “Notice: Undefined index: action in C:\wamp\www\erp\tes3.php on line 45″, mohon pencerahannya,

  12. gery says:

    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…

  13. rosihanari says:

    @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.

  14. Nugroho says:

    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…?

  15. Nugroho says:

    Mohon solusinya Pak dari permasalahan di atas.
    Trima kasih sebelumnya

  16. gery says:

    ok…thanx yah atas penjelasanya…….

  17. beny says:

    bagus..
    need some inspiration

  18. maulidan says:

    Ass, maaf mas bisa gak kalau pake link jadi gak pake input type submit ataupun button, jadi kayak di joomla, terimakasih. Wss

  19. andika says:

    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…

  20. rosihanari says:

    @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? :-)

  21. wawan says:

    kalau di buat sistem update gimana ya pak…terima kasih sebelumnya

  22. rans says:

    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

  23. rosihanari says:

    @rans: anda memakai PHP versi berapa bu? coba diganti seperti ini koneksinya

    $koneksi = mysql_connect(…);
    $query = “…..”;
    $hasil = mysql_query($query, $koneksi);

  24. rans says:

    terima kasih pak, dah bisa

  25. taufiq says:

    pak. ada contoh pembuatannya untuk select dan insert data gk ?

  26. huntu says:

    di coba ya scriptnya… tenkyu berat nih…

  27. iwan says:

    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…!

  28. nova says:

    pak script yang diatas kan datanya dari database klo misalnya datanya hasil dari input php bisa g pak???

  29. hous3b4d says:

    matur nuwun…

  30. rozikin says:

    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

  31. rosihanari says:

    @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.

  32. rozikin says:

    trima kasih…

  33. Imam says:

    Makasih mas….sangat bermanfaat….
    ijin copas ya mas….

  34. irvan says:

    pak… kalo kasus deletenya dengan tabel yg dibuat dengan paging bagaimana

  35. rosihanari says:

    @irvan: coba anda cari di blog ini dengan keyword ‘script hapus data’



Tolong beri komentar donk!

Komentar Anda akan berguna untuk kemajuan blog ini.


Mohon maaf, komentar yang menggunakan email palsu atau komentar bernada negatif atau cemooh secara otomatis akan terhapus karena dianggap spam dan tidak akan tampil dalam daftar komentar.

Dimohon jangan pula memasukkan code program dalam bentuk apapun ke dalam komentar karena akan dianggap spam.

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word