[]

çoklu select menü html, js (seçime göre değişecek)

yani;

ülkeler-------iller--------ilçeler

ülke seçince il, il seçince ilçeler listelenecek. google üzerinden bayağı aradım çalışan sonuç çıkaramadım.

 
Öncelikle böylesi bir listeleme eldeki kaynaklarla biraz sorunlu olacaktır çünkü her ülkenin kendine has yönetim kısımları bulunmakta.. Fakat sınırlı sayıda ülkeyle bu işi yapıcaksanız eğer, ya bir Database oluşturarak ya da verileri coğrafik veriler içeren bir siteden çekerek yapabilirsiniz ama bu da profesyonele yakın düzeyde bilgi ve birikim ister... Ben genellikle coğrafik verileri işlerken, ülke kısmını baz alır ve diğer verilerin auto-complete ile doldurulmasını sağlarım ki bana göre en rahat yöntem budur. Fakat illa manuel olarak yapacağım, sayfam statik, istediğim ülkeler belli derseniz:

downloads.mysql.com (ülkeler ve şehirler database)

www.world-gazetteer.com (PHP'de cURL kullanılarak veriler çekilebilir, ülke, şehir, eyalet, subdivisionlar, ormanlar, nehirler v.s.)

www.geonames.org (world gazetteer ile aynı sistem fakat, JSON veya xml destekli veri çekimine izin var)

ÜCRETLİ olarak :www.geodatasource.com
  • Sir.Fitih  (29.06.11 10:45:12 ~ 10:49:13) 
ben ülkeler ve iller bunu örnek olsun diye verdim tamamen farklı bir sitemde kullanıcam ve bunu veritabanı kullanmadan yapmam gerekli, xml olur js olur.


  • karaden  (29.06.11 11:22:40) 
istediğim anlaşılmamış..

3 tane select box yan yana durucak 1. de seçim olunca 2. listelenecek, 2.de değişim olunca 3. listelenecek.
  • karaden  (29.06.11 11:24:15) 
istediğin anlaşıldı fakat çok basit birşeymiş gibi algılıyorsun sen bunu..

Select box diyorsun, selectbox'a ülkeleri nasıl koymayı düşünüyorsun ? Ezbere bir ülke listen mi var? Geçtim, diğer selectboxlar birbiri ile ilintili, iller listesinde dünyadaki bütün illeri mi koymak istiyorsun..

Database bazlı olanını detaylı olarak açıkliym yine de amme hizmeti hesabi..

1. Selectbox ülkeler (db'den ülkeleri çekiyorum)
<select id="ulkeler">
<?php foreach(ulkeler as ulke) { ?>
<option value="<?php echo $ulke?>"><?php echo $ulke?></option>
</select>

2. Selectbox iller (cektiğim ülkelere göre liste yapicam)

<select id="iller" onChange="ilsec()";>
<option value="00">Lütfen bir il seçiniz..</option>
</select>

3. bir javascript (ajax ile iller.php'den veri cekicez);

(Burda bir script yazdıydım, satıra sığmadığı için silinmiş)


-- Olayın özü bu, bilene birçok şey ifade ediyor, eğer burdaki anlatımı çözümleyemiyorsanız bu işe hiç bulaşmayın derim.


--Ek olarak sayfa içinde manuel olarak girilmiş (yani database ve php kullanmadan statik bir sayfanın içine gömülmüş) ülkeler, iller, ilçeler verileri minimum 100 mb tutar. XML bazlı olduğunda bi 200mb'yi bulur sanırım.
  • Sir.Fitih  (29.06.11 12:42:57 ~ 12:47:47) 
o da zor ama jquery ile şöyle kabataslak:
<select id="ulke">
<option>seçin</option>
<option value="1">türkiye</option>
<option value="2">bulgaristan</option>
<option value="3">iran</option>
</select>
<select id="sehir">
<option>ülke seçin</option>
</select>
<select id="ilce">
<option>ülke ve şehir seçin</option>
</select>

<script>
var ulkeler = new Array();
var ulkelex = new Array();
ulkelex[0] =ulkelex[1]=ulkelex[2]=ulkelex[3] = new Array();
ulkeler[0] = new Array('ülke seçin');
ulkeler[1] = new Array('seçin','istanbul','ankara','izmir');
ulkeler[2] = new Array('seçin','sofya','filibe','varna');
ulkeler[3] = new Array('seçin','tebriz','isfahan','tahran');
ulkelex[0][0] = new Array('ülke seçin');
ulkelex[1][0] = new Array('ülke seçin');
ulkelex[2][0] = new Array('ülke seçin');
ulkelex[3][0] = new Array('ülke seçin');
ulkelex[1][1] = new Array('şehir seçin','beykoz','uskudar','kadikoy');
ulkelex[1][2] = new Array('şehir seçin','sincan','çinçin','keçiören');
ulkelex[1][3] = new Array('şehir seçin','selçuk','menderes','bergama');
$('#ulke').change(function() {
var selectetext = '';
var hangi = $(this).val();
for(var i=0;i<ulkeler[hangi].length;i++) {
selectetext = selectetext + '<option value="'+i+'">'+ulkeler[hangi][i]+'</option>';
}
$('#sehir').html(selectetext);
return false;
});
$('#sehir').change(function() {
var selectetext2 = '';
var hangi = $('#ulke').val();
var hanil = $(this).val();
for(var i=0;i<ulkelex[hangi][hanil].length;i++) {
selectetext2 = selectetext2 + '<option value="'+i+'">'+ulkelex[hangi][hanil][i]+'</option>';
}
$('#ilce').html(selectetext2);
return false;
});
</script>
  • ensar  (29.06.11 15:50:00) 
sirfith sağol ama bilmediğin konuda yorum yapıyorsun, neyin 100mb ından bahsediyorsun? ben az çok biliyorum bu işin nasıl olacağını 100mb değil 5kb ı geçmez ama js de dizi ve onchange olaylarını tanımlayamadım.

yazdığın cevaptaki ilsec() fonksiyonunu soruyorum sadece.
  • karaden  (29.06.11 17:19:30) 
yahu tüm ülkeler, illeri ve ilçelerinden bahsediyorsun. Bilmediğim konuya niçin cevap yazıyim. En azından 10 tane projem var bu şekilde! Tanımadığın insanları sırf kendin muhabbeti çözemiyorsun diye yargılama, niyetimiz sadece yardım.


buyur, tüm ülkeler, il ilçe eyalet:

download.geonames.org


bu da ilsec() fonksiyonun;

pastebin.com
  • Sir.Fitih  (29.06.11 17:28:06 ~ 17:46:08) 
işin içinde veri tabanı olduğu zaman ben de yazabiliyorum, yazdım da. şu an bana verilerin direk js de diziler halinde girildiği lazım. bu işin aynısını yapan ama verileri veri tabanından çeken kodum:

$(document).ready(function(){
$('#tur').change(function(){
var secim=$('#tur').val();
$.post(
'select.php?a=tur',
{s:secim},
function(answer){
$('#tip').html(answer);
}
);

});
$('#tip').change(function(){
var secim=$('#tip').val();
$.post(
'select.php?a=tip',
{s:secim},
function(answer){
$('#listeleme').html(answer);
document.form1.submit();
}
);

});

yaptığı iş: seçimi select.php ye gönderiyor, select.php dönen değeri 2.select box a listeliyor, 2.den seçince de ekrana listeliyor falan filan. ben de bu yazacağım kodu facebook üzerinden bir sayfada kullanıcam facebook belli oranda kod yazmaya izin veriyor, hem php hem veritabanı yalan yani. uygulama geliştirme olsa olurdu.
  • karaden  (29.06.11 17:36:11) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.