Menampilkan Daftar Alamat di Seluruh Indonesia dengan PHP Select Option
Dalam proses registrasi khususnya dalam pengisian alamat idealnya memang dibuat / disajikan dalam bentuk pilihan alamat .Sehingga dalam tutorial ini Saya akan memberikan sebuah contoh kode PHP untuk menampilkan daftar alamat di seluruh Indonesia . Dimana alamat akan ditampilkan dalam bentuk pilih select option dengan sedikit tambahan Javascript.
Untuk database alamat seluruh Indonesia bisa Anda unduh pada Github https://github.com/cahyadsn/ dan selanjutnya Anda bisa mengimport databasenya ke server database masing – masing untuk melakukan uji coba.
Baca juga : Tutorial PHP : Menampilkan Option Lain Saat Salah Satu Option Dipilih
Menampilkan Daftar Alamat Diseluruh Indonesia dengan PHP
Sebelumnya perlu saya jelaskan bahwa disini saya menggunakan bootstrap sebagai UI kemudian Anda juga perlu menambahkan Library jQuery juga untuk operasi select option yang menampilkan daftar alamat berdasarkan provinsi kab/kota, kecamatan dan desa. Kemudian disini gaya penulisan yang saya buat akan menggunakan gaya OOP PHP PDO
Lalu karena ini memang tujuannya untuk uji coba, disini saya bukan hanya menampilkan pilihan alamatnya saja tapi juga melakukan uji coba atau mencontohkan bagaimana nilai alamatnya disimpan dan bagaimana cara membaca nilai alamat yang sudah tersimpan didatabase
- Buat sebuah file untuk koneksi ke database MySQL dengan database.php seperti berikut
<?php class database { private $host="localhost"; private $user="root"; private $pass=""; private $db="wilayah"; public $koneksi; public function __construct() { try{ $this->koneksi = new PDO("mysql:host=".$this->host."; dbname=".$this->db."", $this->user, $this->pass); $this->koneksi->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { echo $e->getMessage(); } return $this->koneksi; } } ?>
- Selanjutnya buat file dengan nama function.php
<?php class Alamat extends database { public function getAlm($data, $n, $length, $table) { try { $sql = "SELECT kode, nama FROM $table WHERE LEFT(kode,:n)=:data AND CHAR_LENGTH(kode)=:length"; $stmt = $this->koneksi->prepare($sql); $stmt->execute(array(':n'=>$n, ':data'=>$data,':length'=>$length)); return $stmt; } catch(PDOException $e) { echo $e->getMessage(); } } public function selectProv() { try { $sql ="SELECT kode, nama FROM wilayah_2022 WHERE CHAR_LENGTH(kode)=2"; $stmt=$this->koneksi->prepare($sql); $stmt->execute(); return $stmt; } catch(PDOException $e) { echo $e->getMessage(); } } public function simpanAlamat($nama, $prov, $kab, $kec, $des) { try { $sql = "INSERT INTO simpan_alamat(nama, al_prov, al_kab, al_kec, al_des) VALUES(:nama, :al_prov, :al_kab, :al_kec, :al_des)"; $stmt=$this->koneksi->prepare($sql); $stmt->bindParam(":nama",$nama); $stmt->bindParam(":al_prov",$prov); $stmt->bindParam(":al_kab",$kab); $stmt->bindParam(":al_kec",$kec); $stmt->bindParam(":al_des",$des); $stmt->execute(); return $stmt; } catch(PDOException $e) { echo $e->getMessage(); } } public function tampilAlamat() { try { $sql ="SELECT * FROM simpan_alamat"; $stmt=$this->koneksi->prepare($sql); $stmt->execute(); return $stmt; } catch(PDOException $e) { echo $e->getMessage(); } } public function readAlamat($kolom, $where, $data, $table) { try { $sql = "SELECT $kolom FROM $table WHERE $where=:$where"; $stmt = $this->koneksi->prepare($sql); $stmt->bindParam(":$where", $data); $stmt->execute(); $stmt->bindColumn("$kolom",$kolom); $stmt->fetch(PDO::FETCH_BOUND); return $kolom? $kolom : ''; } catch(PDOException $e) { echo $e->getMessage(); } } public function getTable($table, $where, $data) { try { $sql="SELECT * FROM simpan_alamat WHERE $where=:$where"; $stmt=$this->koneksi->prepare($sql); $stmt->bindParam(":$where",$data); $stmt->execute(); $this->row=$stmt->fetch(PDO::FETCH_ASSOC); return $this->row; } catch(PDOException $e) { echo $e->getMessage(); } } public function jsAlamat() { ?> <script type="text/javascript"> $(document).ready(function(){ // sembunyikan form kabupaten, kecamatan dan desa $("#kab").hide(); $("#kec").hide(); $("#des").hide(); // ambil data kabupaten ketika data memilih provinsi $('body').on("change","#prov",function(){ var id = $(this).val(); var data = "id="+id+"&data=kabupaten"; $.ajax({ type: 'POST', url: "get_alamat.php", data: data, success: function(hasil) { $("#kab").html(hasil); $("#kab").show(); $("#kec").hide(); $("#des").hide(); } }); }); // ambil data kecamatan/kota ketika data memilih kabupaten $('body').on("change","#kab",function(){ var id = $(this).val(); var data = "id="+id+"&data=kecamatan"; $.ajax({ type: 'POST', url: "get_alamat.php", data: data, success: function(hasil) { $("#kec").html(hasil); $("#kec").show(); $("#des").hide(); } }); }); // ambil data desa ketika data memilih kecamatan/kota $('body').on("change","#kec",function(){ var id = $(this).val(); var data = "id="+id+"&data=desa"; $.ajax({ type: 'POST', url: "get_alamat.php", data: data, success: function(hasil) { $("#des").html(hasil); $("#des").show(); } }); }); }); </script> <?php } public function jsAlamat2() { ?> <script type="text/javascript"> $(document).ready(function(){ // ambil data kabupaten ketika data memilih provinsi $('body').on("change","#prov",function(){ var id = $(this).val(); var data = "id="+id+"&data=kabupaten"; $.ajax({ type: 'POST', url: "get_alamat.php", data: data, success: function(hasil) { $("#kab").html(hasil); $("#kab").show(); } }); }); // ambil data kecamatan/kota ketika data memilih kabupaten $('body').on("change","#kab",function(){ var id = $(this).val(); var data = "id="+id+"&data=kecamatan"; $.ajax({ type: 'POST', url: "get_alamat.php", data: data, success: function(hasil) { $("#kec").html(hasil); $("#kec").show(); } }); }); // ambil data desa ketika data memilih kecamatan/kota $('body').on("change","#kec",function(){ var id = $(this).val(); var data = "id="+id+"&data=desa"; $.ajax({ type: 'POST', url: "get_alamat.php", data: data, success: function(hasil) { $("#des").html(hasil); $("#des").show(); } }); }); }); </script> <?php } public function __destruct() { return true; } }
- Kemudian buat file dengan nama get_alamat.php seperti berikut
10<?php require_once('database.php'); require_once('function.php'); $obj = new Alamat; $data = $_POST['data']; $id = $_POST['id']; $n=strlen($id); $length=($n==2?5:($n==5?8:13)); ?> <?php if($data == "kabupaten"){ ?> <option value="">Pilh Kab/Kota</option> <?php $daerah = $obj->getAlm($id, $n, $length, 'wilayah_2022'); while($d = $daerah->fetch(PDO::FETCH_ASSOC)){ ?> <option value="<?php echo $d['kode']; ?>"><?php echo $d['nama']; ?></option> <?php } ?> <?php }else if($data == "kecamatan"){ ?> <option value="">Pilih Kecamatan</option> <?php $daerah = $obj->getAlm($id, $n, $length, 'wilayah_2022'); while($d = $daerah->fetch(PDO::FETCH_ASSOC)){ ?> <option value="<?php echo $d['kode']; ?>"><?php echo $d['nama']; ?></option> <?php } ?> <?php }else if($data == "desa"){ ?> <option value="">Pilih Desa</option> <?php $daerah = $obj->getAlm($id, $n, $length, 'wilayah_2022'); while($d = $daerah->fetch(PDO::FETCH_ASSOC)){ ?> <option value="<?php echo $d['kode']; ?>"><?php echo $d['nama']; ?></option> <?php } ?> <?php } ?>
- Terakhir tambahkan file index.php
<?php require_once('database.php'); require_once('function.php'); $obj = new Alamat; $simpan = ""; if(isset($_POST['simpan'])) { $nama = $_POST['nama']; $prov = $_POST['prov']; $kab = $_POST['kab']; $kec = $_POST['kec']; $des = $_POST['des']; if($obj->simpanAlamat($nama, $prov, $kab, $kec, $des)) { $simpan="<div class='alert alert-success'>Data berhasil disimpan</div>"; } else { $simpan="<div class='alert alert-danger'>Data gagal disimpan</div>"; } } ?> <!DOCTYPE html> <html> <head> <title>Module Test</title> <link href="bootstrap/dist/css/bootstrap.min.css" rel="stylesheet" type="text/css"/> </head> <body> <div class="container"> <div class="container-fluid"> <div class="row"> <div class="col-md-12"> <h4>MODULE TEST ALAMAT</h4> <hr> <?=$simpan?> <form action="" method="POST"> <div class="form-group"> <label>Nama Lengkap</label> <input class="form-control" name="nama" required=""> </div> <div class="row"> <div class="col-md-3"> <div class="form-group"> <label>Provinsi</label> <select class="form-control" name="prov" id="prov" required=""> <option>Pilih</option> <?php $prov = $obj->selectProv(); while($provinsi=$prov->fetch(PDO::FETCH_ASSOC)) { echo '<option value='.$provinsi['kode'].'>'.$provinsi['nama'].'</option>'; } ?> </select> </div> </div> <div class="col-md-3"> <div class="form-group"> <label>Kab/Kota</label> <select class="form-control" name="kab" id="kab" required=""> </select> </div> </div> <div class="col-md-3"> <div class="form-group"> <label>Kecamatan</label> <select class="form-control" name="kec" id="kec" required=""> </select> </div> </div> <div class="col-md-3"> <div class="form-group"> <label>Desa/Kel</label> <select class="form-control" name="des" id="des" required=""> </select> </div> </div> </div> <div class="form-group"> <button type="submit" name="simpan" class="btn btn-md btn-primary"> Simpan</button> </div> </form> </div> </div> <div class="row"> <div class="col-lg-12 col-md-12 col-xs-12"> <div class="table-responsive"> <table class="table table-bordered table-striped"> <thead> <th>No</th> <th>Nama</th> <th>Prov</th> <th>Kota/Kab</th> <th>Kecamatan</th> <th>Desa</th> <th>Edit</th> </thead> <tbody> <?php $no=1; $d=$obj->tampilAlamat(); while($row=$d->fetch(PDO::FETCH_ASSOC)) { ?> <tr> <td><?=$no;?></td> <td><?=$row['nama']?></td> <td><?=$obj->readAlamat('nama','kode',$row['al_prov'],'wilayah_2022')?></td> <td><?=$obj->readAlamat('nama','kode',$row['al_kab'],'wilayah_2022')?></td> <td><?=$obj->readAlamat('nama','kode',$row['al_kec'],'wilayah_2022')?></td> <td><?=$obj->readAlamat('nama','kode',$row['al_des'],'wilayah_2022')?></td> <td><a href="edit.php?edit=<?=$row['id_data']?>" target="_blank">Edit</a></td> </tr> <?php $no+=1; }?> </tbody> </table> </div> </div> </div> </div> </div> <script src="jquery/dist/jquery.min.js"></script> <script src="bootstrap/dist/js/bootstrap.min.js"></script> <?=$obj->jsAlamat2()?> </body> </html>
Dalam contoh kode diatas (3) saya mencontohkan bagaimana nilai – nilai dari setiap alamat disimpan kemudian didalam function.php(2) terdapat fungsi untuk bagaimana juga cara membaca nilai alamat yang tersimpan, karena nilai alamat yang tersimpan disimpan dalam bentuk kode alamat.
[ Download Contoh Kode Menampilkan Daftar Alamat di Seluruh Indonesia ]
0 Response to "Menampilkan Daftar Alamat di Seluruh Indonesia dengan PHP Select Option"
Post a Comment
Komentar yang Anda kirim akan terlebih dahulu di moderasi oleh Admin