Pertama di Indonesia: "Murottal Al Qur'an + Terjemahan" dalam bentuk CD MP3 Original (Coba dulu FREE)
Dapatkan Script SMS Gateway PHP + MySQL

Seperti: software pengirim SMS massal, SMS survei, SMS polling, SMS quick count, SMS dakwah, Web2SMS dan masih banyak lagi... semuanya berbasis PHP & MySQL
[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?


Beberapa artikel terkait


Share this article on:

Kata kunci: checkbox - hapus - multi selection -


Ada 22 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



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.

*
Untuk membuktikan bahwa komentar Anda bukan spam, tulis kata yang muncul dalam gambar di bawah ini. Bila Anda tidak bisa membaca kata dalam gambar, klik pada gambar tersebut untuk mendengarkan suara dari kata tersebut
Click to hear an audio file of the anti-spam word