PHP ve Ajax ile Şehir ve İlçe Seçimi Yapmak

  2018/01/31 18:58 • Ana Sayfa > PHP

İlk kod yazmaya başlamamda dahi etkisi olan bu konu, aslında blog sitesi açarken bile işimize yarayacak türden. Her ne kadar blog gibi keyfi içeriklerde elzem bir içerik olmasa da, şehir ve ilçe seçimi başta e-ticaret siteleri olmak üzere, kullanıcı adres bilgisi talep eden (veya benzer türlerde) yapılar için farz niteliği taşıyor. Bu yazıda da, PHP ve Ajax ile, şehir seçtikten sonra; ilçeleri listeleteceğiz. 

Hayatı Kodla (hayatikodla.net) internet sitesi üzerinden şehir ve ilçelerin .sql dosyalarını indirdik. Fakat paylaşılan dosya içeriği eski. Bu yüzden imkan varsa manuel veya elinizde zaten bir kaynak varsa; ilçeleri güncel olarak çekmenizi tavsiye ederim.

Önce HTML!

<select class="form-control" name="member_country" onChange="ilceGetir(this.value);">
<?php $listS = $db->query("SELECT * FROM sehir ORDER BY sehir_id ASC"); ?>
<option value="0" selected>Şehir Seçin 
<?php foreach ($listS as $list) { ?>
<option value="<?php echo $list['sehir_id']; ?>"><?php echo $list['sehir_name']; ?></option> 
<?php } ?>
</select>
<select class="form-control" name="member_ilce" id="sehirler"> 
<option value="">Lütfen önce şehir seçin!</option>
</select>

Şehir seçimi yaptıktan sonra ilçe seçimi yapacak select kutusuna yönlendirdi. Şehir seçim ekranında; veritabanından şehirleri listeledik fakat görüldüğü üzere ilçe option değerleri henüz ortalıkta yok.

O zaman Javascript!

function ilceGetir(val) {
$.ajax({
type: "POST",
url: "/country.php",
data:'country_id='+val,
success: function(data){
$("#sehirler").html(data);
}
});
}

Sayfanın altına gömdüğümüz javascript ile, son olarak; oluşturduğumuz .php dosyasına istek göndereceğiz. Aynı dosyadan da yanıtı döndüreceğiz. 

country.php; evet! PHP!

<?php include_once("../../database.php"); ?>
<?php $listIl = $db->query("SELECT * FROM ilce WHERE ilce_il = '$_POST[country_id]'"); ?>
<?php foreach ($listIl as $list) { ?>
<option value="<?php echo $list['ilce_id']; ?>"><?php echo $list['ilce_name']; ?></option>
<?php } ?>

Tüm işlem bu kadar. Üstelik kodları o kadar temiz ve anlaşılır bırakıyorum ki; istediğiniz her türlü sektöre ve ürüne evrilebilecek durumda. 

Hazırcılar uzak dursun, dosya paylaşmayacağım. Fakat okuyan ve bir sunucu vasıtasıyla deneme yapan herkesin rahatlıkla hazırlayabileceği bir ürün olduğuna garanti verebilirim. Dosya içeriğinde sadece şehirler ve ilçeler .sql dosyası mevcut.

Yazar: Tarık Menteşe (@tarikmentese)

2010'dan bu yana c#, PHP, Python ve JS uygulamaları geliştiriyorum. Mobil platformlar için Swift ve Java konusunda bilgi sahibiyim. Bootstrap, ionic ve Laravel frameworklerine aşinayım. Ekip çalışmasına yatkınım :)