Membuat Dropdown Bertingkat dengan jQuery dan Ajax

Dropdown bertingkat dapat diartikan sebagai dropdown yang saling ketergantungan kepada nilai yang lebih tinggi atau yang berhubungan.

Membuat Dropdown Bertingkat dengan jQuery dan Ajax
Setelah disibukkan dengan membuat artikel mengenai beasiswa, akhirnya saya memulai lagi untuk berbagi tutorial di bidang web development. Well, Pada kesempatan kali ini, saya ingin berbagi tutorial mengenai cara membuat dropdown bertingkat dengan menggunakan jQuery dan Ajax. Studi kasus dalam tutorial ini adalah wilayah di Indonesia.

Tidak jarang, kita sering melihat dropdown bertingkat baik dalam pemrograman web maupun pemrograman mobile. Dropdown bertingkat dapat diartikan sebagai dropdown yang saling berhubungan tergantungan kepada nilai yang lebih tinggi atau yang berhubungan. Misalnya, dalam kasus kita kali ini, saat kita memilih provinsi, maka data kabupaten/kota di bawahnya akan otomatis menampilkan data kabupaten/kota yang ada pada provinsi tersebut. Contoh lainnya misalnya saat kita memilih jenis ponsel, kemudian data dalam dropdown akan otomatis menapilkan ponsel berdasarkan jenis ponsel yang kita pilih.

Dengan teknologi sekarang, dropdown bertingkat ini dapat dilakukan secara server-side. Artinya, kita tidak perlu me-refresh halaman pencarian kita. Perhatikan cuplikasi gambar di bawah ini:


Ringkasan

File yang akan dibuat pada latihan kita kali ini ada 3 (tiga) file, yaitu:
  1. index.php
  2. koneksi.php
  3. loadData.php
Tabel yang dibuat adalah tabel db_kependudukan.

Langkah 1: Siapkan database dan data wilayah Indonesia

Buatlah sebuah database dengan nama "db_kependudukan" (tanpa tanda petik)! Kemudian import data wilayah berikut ke dalam database "db_kependudukan" yang tadi sudah dibuat.

Download data wilyah Indonesia:

Langkah 2: Buat file koneksi ke database

Salin script berikut ini dan simpan dalam folder yang proyek kawan-kawan dengan nama "koneksi.php"
[<?php
 $hostname  = "localhost"; 
 $dbusername = "root"; /*Nama username database Anda*/
 $dbpassword     = ""; /*Password database Anda*/
 $dbname  = "db_kependudukan"; /*Nama database Anda*/

 $koneksi = mysqli_connect($hostname, $dbusername, $dbpassword, $dbname);

 if(!$koneksi){
  echo "Koneksi ke database gagal!";
 }
?>]

Langkah 3: Membuat file index

Langkah selanjutnya adalah membuat file index sebagai halaman awal kita nanti. Buatlah sebuah file dengan nama "index.php" dan salin script berikut:
[<?php 
 require_once('koneksi.php');
?>
<!DOCTYPE html>
<html>
<head>
 <title>Dropdown Wilayah</title>

 <script src="https://code.jquery.com/jquery-1.11.3.js" type="text/javascript"></script>

 <script type="text/javascript">
  function loadKabupaten() {
   var id_provinsi = $('#provinsi').val();

   $.ajax({
    type: 'GET',
    url: 'loadData.php',
    data: "id_provinsi=" + id_provinsi,
    success: function(data){
     if(data.length > 0){
      $('#kabupaten').html(data);
     } else {
      $('#kabupaten').html("<option>Pilih Kabupaten/Kota</option>");
      $('#kecamatan').html("<option>Pilih Kecamatan</option>");
      $('#kelurahan').html("<option>Pilih Kelurahan/Desa</option>");
     }
    }
   });
  }

  function loadKecamatan() {
   var id_kabupaten = $('#kabupaten').val();

   $.ajax({
    type: 'GET',
    url: 'loadData.php',
    data: "id_kabupaten=" + id_kabupaten,
    success: function(data){
     $('#kecamatan').html(data);
    }
   });
  }

  function loadKelurahan() {
   var id_kecamatan = $('#kecamatan').val();

   $.ajax({
    type: 'GET',
    url: 'loadData.php',
    data: "id_kecamatan=" + id_kecamatan,
    success: function(data){
     $('#kelurahan').html(data);
    }
   });
  }
 </script>

 <style type="text/css">
  .select {
   width: 200px;
   padding: 5px;
  }
 </style>
</head>
<body>
 <table>
  <tr>
   <td>Nama Provinsi</td>
   <td>
    <select id="provinsi" onchange="loadKabupaten()" class="select">
     <option value="0">Pilih Provinsi</option>
     <?php
      $tableQry = mysqli_query($koneksi, "SELECT * FROM provinces");

      while($dataProvinsi = mysqli_fetch_array($tableQry)){
     ?>
      <option value="<?php echo $dataProvinsi['id']; ?>"><?php echo $dataProvinsi['name']; ?></option>
     <?php
      }
     ?>
    </select>
   </td>
  </tr>
  <tr>
   <td>Nama Kabupaten/Kota</td>
   <td>
    <select id="kabupaten" onchange="loadKecamatan()" class="select">
     <option>Pilih Kabupaten/Kota</option>
    </select>
   </td>
  </tr>
  <tr>
   <td>Nama Kecamatan</td>
   <td>
    <select id="kecamatan" onchange="loadKelurahan()" class="select">
     <option>Pilih Kecamatan</option>
    </select>
   </td>
  </tr>
  <tr>
   <td>Nama Kelurahan/Desa</td>
   <td>
    <select id="kelurahan" class="select">
     <option>Pilih Kelurahan/Desa</option>
    </select>
   </td>
  </tr>
 </table>
</body>
</html>]

Membuat File untuk Me-load Data Wilayah

[Updated - 06 April 2017] Langkah selanjutnya adalah membuat file yang akan me-load data wilayah saat kita memilih wilayah induk. Misalnya, saat kita memilih Provinsi Jawa Barat; maka wilayah anaknya akan menampilkan semua Kabupaten/Kota yang berada di Provinsi Jawa Barat; begitu juga seterusnya.

Buatlah sebuah file dengan nama loadData.php dan simpan bersama file latihan kita kali ini! Berikut adalah skripnya:
[<?php
 require_once('koneksi.php');

 $id_provinsi  = @$_GET['id_provinsi'];
 $id_kabupaten  = @$_GET['id_kabupaten'];
 $id_kecamatan  = @$_GET['id_kecamatan'];

 if(isset($id_provinsi)){
  $tableQry = mysqli_query($koneksi, "SELECT * FROM regencies WHERE province_id = '$id_provinsi'");

  while ($dataKabupaten = mysqli_fetch_array($tableQry)) {
   echo "<option value=" . $dataKabupaten['id'] . ">" . $dataKabupaten['name'] . "</option>";
  }
 }

 if(isset($id_kabupaten)){
  $tableQry = mysqli_query($koneksi, "SELECT * FROM districts WHERE regency_id = '$id_kabupaten'");

  while ($dataKecamatan = mysqli_fetch_array($tableQry)) {
   echo "<option value=" . $dataKecamatan['id'] . ">" . $dataKecamatan['name'] . "</option>";
  }
 }

 if(isset($id_kecamatan)){
  $tableQry = mysqli_query($koneksi, "SELECT * FROM villages WHERE district_id = '$id_kecamatan'");

  while ($dataKelurahan = mysqli_fetch_array($tableQry)) {
   echo "<option value=" . $dataKelurahan['id'] . ">" . $dataKelurahan['name'] . "</option>";
  }
 }
?>]

Penutup

Sebenarnya, tutorial ini terlalu singkat dan mungkin kurang dipahami oleh newbie atau beberapa programmer pemula karena memang bukan tingkatannya. Mungkin terbesit dalam hati, "ini untuk apa? itu untuk apa? dan sebagainya." Saya berharap, artikel ini bisa membantu kawan-kawan programmer web lainnya selain memang dokumentasi saya pribadi kalau lupa. Hahaha... 

COMMENTS

BLOGGER: 16
Loading...
Name

2016,2,Action,1,Adventure,1,Agama Kristen,1,Agama Yahudi,1,Ahok,2,Ajax,2,Android,1,Aplikasi,1,Art of War,1,Bahasa,1,Balai Bahasa,1,Beasiswa,4,Belanda,1,Biografi,1,Blindness,1,Blog,3,Brothers,1,Cards View,1,Catatan Hidup,1,Change.org,1,China,1,Comedy,1,Cover,1,CSS,2,Curhat,1,DataGrid,1,Demo Bela Islam I,1,Disaster,1,Disqus,1,Dokumentasi,8,Download,3,Drama,1,Drama Korea,3,Duolingo,1,EasyUI,1,Framework CSS,1,Game,3,GIT,1,Google AdSense,1,Groningen,1,Groningen University,1,HTML,2,Islam,2,jQuery,5,K-Film,3,K-Movie,4,Kata Mutiara,1,Kisah Hidup,1,Konfusius,1,Korean,4,KPOP,1,Kriptografi,1,Kuliah,1,Kungfu,1,Kungfu Style,1,Kustomisasi,1,Kutipan,1,LKS Jawa Barat 2011,1,LPDP,26,LPDP Batch 4 2016,11,LPDP Pinned,2,Material Design,2,Materialize,1,Motivasi,1,Movie,4,Mozilla Firefox,1,Muslim Cyber Army,1,MySQLi,1,NetBeans,1,Niagahoster,1,Object Oriented Programming,1,Opini,7,Paspor,1,Pendidikan,1,Pengalaman,26,Pengayaan Bahasa,4,Perang,1,Perbandingan Agama,3,Petisi Online,1,PHP,6,PowerDesigner,3,QR Code,1,Review,3,Sejarah,1,Simulation,1,Software,1,Source Code,1,Strategy,2,Studi Agama-agama,1,Sun Tzu,1,Suspense-Thriller,1,Themes24x7,1,Tips dan Trik,13,TOEFL,4,TOEFL ITP,4,Train,1,Troubleshooting,2,Tutorial,23,UPI Bandung,1,Video,2,Virus,1,W2UI,1,Walkband,1,Web Design,7,Web Programming,3,Yesus Kristus,2,Zakir Naik,1,Zhang Ziyi,1,Zombie,1,
ltr
item
Anan Bahrul Khoir: Membuat Dropdown Bertingkat dengan jQuery dan Ajax
Membuat Dropdown Bertingkat dengan jQuery dan Ajax
Dropdown bertingkat dapat diartikan sebagai dropdown yang saling ketergantungan kepada nilai yang lebih tinggi atau yang berhubungan.
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRpi5tCtp32LMojOIDIxpWTlkoixP5ZnBcakka5rbl7DWBX6qEy-ktNWhzS_t8qa0kmTlIz1aPFMyQFs2mVX3DoqHgUTJzCVeDOrxNT0PJBX3iEMiA7nl4-Gp7gHXmK9rtg6e52p7iBqo/s320/webdesign+%2528Small%2529.jpg
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRpi5tCtp32LMojOIDIxpWTlkoixP5ZnBcakka5rbl7DWBX6qEy-ktNWhzS_t8qa0kmTlIz1aPFMyQFs2mVX3DoqHgUTJzCVeDOrxNT0PJBX3iEMiA7nl4-Gp7gHXmK9rtg6e52p7iBqo/s72-c/webdesign+%2528Small%2529.jpg
Anan Bahrul Khoir
https://ananbahrulkhoir.blogspot.com/2017/03/membuat-dropdown-bertingkat-dengan.html
https://ananbahrulkhoir.blogspot.com/
http://ananbahrulkhoir.blogspot.com/
http://ananbahrulkhoir.blogspot.com/2017/03/membuat-dropdown-bertingkat-dengan.html
true
1987288760696967984
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS CONTENT IS PREMIUM Please share to unlock Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy