Powered by Blogger.

Wednesday 15 April 2015

Combo Box / Select Option bertingkat dengan PHP, MySql dan jQuery

Posted by Creative Recipes  |  5 comments

Combo Box atau Select Option bertingkat adalah dua atau lebih combo box yang dimana data yang ditampilkan dalam combo box tersebut berdasarkan pilihan combo box yang sebelumnya.contohnya adalah dalam tutorial kali ini penulis membuat dua buah combo box dimana combo box pertama berisikan data Provinsi sedangkan combo box kedua adalah data Kota, dimana saat User memilih combo box provinsi maka kota yang akan ditampilkan dalam combo box kota adalah kota yang terdapat di Provinsi tersebut.Untuk membuat combo box bertingkat ini "bahan-bahan" yang dibutuhkan antara lain :
  1. database combo_box dengan tabel provinsi dan kota
  2. file jQuery ( versi berapapun)
1. Database
  •  tabel provinsi

    CREATE TABLE IF NOT EXISTS `provinsi` (
      `id_prov` int(11) NOT NULL AUTO_INCREMENT,
      `nm_prov` varchar(25) NOT NULL,
      PRIMARY KEY (`id_prov`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

    --
    -- Dumping data for table `provinsi`
    --

    INSERT INTO `provinsi` (`id_prov`, `nm_prov`) VALUES
    (1, 'JAWA TIMUR'),
    (2, 'JAWA BARAT'),
    (3, 'JAWA TENGAH');
  • tabel kota

    CREATE TABLE IF NOT EXISTS `kota` (
      `id_kota` int(11) NOT NULL AUTO_INCREMENT,
      `id_prov` int(11) NOT NULL,
      `nm_kota` varchar(25) NOT NULL,
      PRIMARY KEY (`id_kota`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=15 ;

    --
    -- Dumping data for table `kota`
    --

    INSERT INTO `kota` (`id_kota`, `id_prov`, `nm_kota`) VALUES
    (1, 1, 'SURABAYA'),
    (2, 1, 'SIDOARJO'),
    (3, 1, 'MOJOKERTO'),
    (4, 1, 'MALANG'),
    (6, 3, 'SOLO'),
    (7, 3, 'SEMARANG'),
    (8, 3, 'PEKALONGAN'),
    (9, 3, 'SURAKARTA'),
    (11, 2, 'BANDUNG'),
    (12, 2, 'BEKASI'),
    (13, 2, 'BOGOR'),
    (14, 2, 'CIREBON');
2. File jQuery download disini 

Tutorial

1. file koneksi database mysql

<?php 
/// edit sesuai dengan settingan database
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";
$dbname = "combo_box";


$conn = mysql_connect("$dbhost","$dbuser","$dbpass");

if (!$conn) die ('Gagal Melakukan Koneksi');

mysql_select_db($dbname,$conn) or die ('Database Tidak Diketemukan di Server');

?>

2. file index.php atau file utama

<?php
    include "conn.php";
?>

<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
Provinsi : <select name="provinsi" id="provinsi">
    <option value="">- Pilih Tempat -</option>
   
    <!-- looping data provinsi -->
    <?php
    $sel_prov="select * from provinsi";
    $q=mysql_query($sel_prov);
    while($data_prov=mysql_fetch_array($q)){
   
    ?>
        <option value="<?php echo $data_prov["id_prov"] ?>"><?php echo $data_prov["nm_prov"] ?></option>
   
    <?php
    }
    ?>
</select>

    &nbsp;&nbsp;&nbsp;<img src="loader.gif" width="10px" height="10px" id="imgLoad" style="display:none">
    <br>
    <br>
Kota : <select name="kota" id="kota">
    <!-- hasil data dari cari_kota.php akan ditampilkan disini -->
</select>

<script>
   
    $("#provinsi").change(function(){
   
        // variabel dari nilai combo box provinsi
        var id_provinsi = $("#provinsi").val();
       
        // tampilkan image load
        $("#imgLoad").show("");
       
        // mengirim dan mengambil data
        $.ajax({
            type: "POST",
            dataType: "html",
            url: "cari_kota.php",
            data: "prov="+id_provinsi,
            success: function(msg){
               
                // jika tidak ada data
                if(msg == ''){
                    alert('Tidak ada data Kota');
                }
               
                // jika dapat mengambil data,, tampilkan di combo box kota
                else{
                    $("#kota").html(msg);                                                     
                }
               
                // hilangkan image load
                $("#imgLoad").hide();
            }
        });    
    });
</script>


3. File cari_kota.php


<?php
    include "conn.php";
   
    $sel_prov="select * from kota where id_prov='".$_POST["prov"]."'";
    $q=mysql_query($sel_prov);
    while($data_prov=mysql_fetch_array($q)){
   
    ?>
        <option value="<?php echo $data_prov["id_kota"] ?>"><?php echo $data_prov["nm_kota"] ?></option><br>
   
    <?php
    }
    ?>


 Penjelasan :

saat combo box provinsi dengan atribut id="provinsi" berubah maka akan menjalankan code    $("#provinsi").change(function() dimana dalam function ini akan mengirimkan data id_provinsi dengan ajax (dibalik layar background) ke file cari_kota.php .dalam file cari_kota.php sendiri akan manampilkan option yang data kota berdasarkan id_provinsi yang dikirimkan dari file index.php. Jika file cari_kota.php berhasil menampilkan option, maka dalam file option tersebut akan ditampilkan pada combo box dengan atribut id="kota" dengan code  $("#kota").html(msg): . jika ingin Download file secara lengkap disini


Tampilan sebelum memilih provinsi

Tampilan setelah memilih provinsi Jawa Tengah , maka kota yang ditampilkan adalah kota yang terdapat di jawa tengah


09:36 Share:
About Naveed Iqbal

Nulla sagittis convallis arcu. Sed sed nunc. Curabitur consequat. Quisque metus enim venenatis fermentum mollis. Duis vulputate elit in elit. Follow him on Google+.

5 comments:

  1. Terimakasih.. Sangat membantu saya (Y)

    ReplyDelete
  2. saya minta file lengkapnya dong, file nya udah tidak tersedia pas mau di download

    ReplyDelete
  3. kalow urlnya ditaruh di folder yang berbeda engga jalan boss
    url: "test3/cari_kota.php",

    ReplyDelete
  4. gan punya saya kok gak bisa keluar ya setelah select option pertama terpilih? padahal cuma ganti query untuk nama tabel dan kolom saja?

    ReplyDelete
  5. Masss.. Bisakah Insertnya Malaui Form Input Agar bisa Di update atau delete ("CRUD")....???

    ReplyDelete

Get updates in your email box
Complete the form below, and we'll send you the best coupons.

Deliver via FeedBurner

Text Widget

About Us

© 2014 .Programmer Mania. Shared by WpCoderX
Proudly Powered by Blogger.
back to top