Postingan lainnya
Bagaimana cara filter dari 3 database yang berbeda
ini gambar project saya :
pengguna harus memilih kecamatan lalu memilih kelurahan (dropdown dependent) kemudian submit, data yang di tampilkan berasal dari 3 data base yang berbeda :
Schema::create('tbl_kecamatan', function (Blueprint $table) {
$table->increments('id');
$table->string('nama');
$table->timestamps();
});
Schema::create('tbl_kelurahan', function (Blueprint $table) {
$table->increments('id');
$table->integer('kecamatan_id');
$table->string('nama');
$table->timestamps();
});
Schema::create('tbl_penerima', function (Blueprint $table) {
$table->increments('id');
$table->integer('kecamatan_id');
$table->integer('kelurahan_id');
$table->string('nama');
$table->string('alamat');
$table->timestamps();
});
saya masih sangat cupu di laravel, mohon bantuannya :D
1 Jawaban:
pertama tama, saya share logic dulu nih bro.. semoga kita sudah sepaham :
1. Yang harus dilakukan adalah pada view : bikin 1 dropdown yang sudah ada isi nya, yaitu kecamatan (sebut saja dropdown ini punya id "kecamatan" juga)
<select id="kecamatan" name="kecamatan">
@foreach($array_of_kecamatan AS $kecamatan)
<option value="{{ $kecamatan->id }}">{{ $kecamatan->nama }}</option>
@endforeach
</select>
2. Buat action onChange dari si #kecamatan menggunakan jquery (biar lebih gampang daripada pakai pure javascript)
<script>
$("#kecamatan").onChange(function(){
var kecamatan_id = $(this).val();
alert("ID terpilih : "+kecamatan_id);
});
</script>
3. Di function onChange si kecamatan, kirim request ajax (berisi ID kecamatan) ke salah satu controller dengan tujuan : - di return sama controller : list kelurahan berdasarkan kecamatan_id yang sama dengan yang kita kirim - return bisa berupa json, string (suka suka saja)
<script>
$("#kecamatan").onChange(function(){
var kecamatan_id = $(this).val();
//alert("ID terpilih : "+kecamatan_id);
request = $.ajax({
url: "/link_ke_routes",
method: "POST",
data: {
_token : $('meta[name="csrf-token"]').attr('content'),
kecamatan_id : kecamatan_id
},
dataType: "json",
success: function (data) {
var str_json = JSON.stringify(data);
array_of_kelurahan = JSON.parse(str_json);
$.each(arr_row_planner, function(array_of_kelurahan, kelurahan){
$("#kelurahan").append("<option value='"+kelurahan['id']+"'>"+kelurahan['nama']+"</option>");
});
}
});
request.done(function( msg ) {
alert('berhasil');
});
request.fail(function( jqXHR, textStatus ) {
alert( "Request failed: " + textStatus );
});
});
</script>
4. pada controller, tangkap request, lalu lakukan query si kelurahan dengan kecamatan_id sesuai yang dikirimkan via request (ini kira kira sendiri ya, mirip post biasa kok, cuma json nya di echo aja : echo json_decode($array_of_kelurahan_setelah_difilter_by_kecamatan);)
5. hasil return kita convert jadi perulangan, bisa pakai $.each(), Untuk mengisi 1 dropdown "kelurahan" yang mungkin sebelumnya masih kosong. dimana perulangan tersebut sudah berisi nama kelurahan berdasarkan kecamatan terpilih sebelumnya (code sudah gabung di poin 3)