• 25-03-2024, 00:17:53
    #1
    Merhabalar. Php'de il ilçe uygulaması yapmaya çalışıyorum. Insert işleminde bir problem yok ama update işleminde sorun yaşıyorum. Update sayfasına geldiğimde, veritabanındaki il ve ilçe kısmını seçebiliyorum. Yalnız, ilçe kısmında sadece, veritabanındaki ilçe görünüyor. Diğer ilçeler görünmüyor. Bir örnek ile anlatayım.
    Mesela, veritabanındaki veriler
    il: İstanbul
    ilçe: Kadıköy
    diyelim. Update sayfasında bu il ve ilçe seçili geliyor. Eğer ben il kısmını diyelim ki "Ankara" yaptım ve tekrar "İstanbul" yaptım. İlçe kısmı o zaman geliyor. Hâlbuki il kısmı "İstanbul", ilçe kısmı "Kadıköy" seçili iken ilçe option'ına tıkladığımda diğer ilçelerin de görünmesi lazım. Ama sadece, veritabanındaki veri gözüküyor. Kodlar aşağıda.

    <select name="il" id="il" onChange="set_child_listbox('il', 'ilce',ilceler,1,0);" required="required" >
        <option value="">Kategori Seç</option>
        <Option Value="İstanbul"
            <?php
            if($vericek['yenieklenenler_il'] === "İstanbul") {
                echo 'selected="selected"';
            }
            ?>
        >İstanbul
        </Option>
        <Option Value="Ankara">Ankara</Option>
    </select>
    <select name="ilce" id="ilce" required="required" class="validate[required]">
        <option value=""></option>
    </select>
    function findObj(n, d) { //v4.01
        var p,i,x;
        if(!d) d = document;
        if((p = n.indexOf("?"))>0&&parent.frames.length) {
            d = parent.frames[n.substring(p+1)].document;
            n = n.substring(0,p);
        }
        if(!(x = d[n])&&d.all) x = d.all[n];
        for (i = 0; !x&&i<d.forms.length;i++) x = d.forms[i][n];
        for (i = 0; !x&&d.layers&&i<d.layers.length;i++) x = MM_findObj(n,d.layers[i].document);
        if(!x && d.getElementById) x = d.getElementById(n);
        return x;
    }
    function MM_findObj(n, d) { //v4.01
      var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
        d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
      if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
      for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
      if(!x && d.getElementById) x=d.getElementById(n); return x;
    }
    
    var ilceler = new Array(new Array('İstanbul','Eminönü'),
    new Array('İstanbul','Bakırköy'),
    new Array('İstanbul','Kadıköy'),
    new Array('İstanbul','Maltepe'),
    new Array('İstanbul','Karaköy'));
    var semtler = new Array();
    function set_child_listbox(sSource,sTarget,childArray,sifirla,tip) {
    //önce temizlik ;)
        var parentObject = findObj(sSource);
        var childObject = findObj(sTarget);
        var base=0;
        if(sifirla==1)
        {
        base=-1;
        }else
        {
        base=0;
        }
        for(var i=childObject.length;i>base;i--) {
            childObject.options[i] = null;
        }
        //childObject.options[0] = new Option("Seçiniz","");
        //var selIndex = parentObject.options[parentObject.selectedIndex].value;
        var selIndex = parentObject.value;
        if (selIndex == "") {
            //childObject.disabled = true;
        } else {
            childObject.disabled = false;
            var childIndex = base+1;
            for (i = 0; i < childArray.length; i++) {
                if (childArray[i][0+tip] == selIndex) {
                    childObject.options[childIndex+1] = new Option(childArray[i][1+tip], childArray[i][1+tip]);
                    childIndex++;
                }
            }
        }
        childObject.selectedIndex = 0;
            if(document.getElementById('nvar_alan_1').value == 'Türkiye' || document.getElementById('nvar_alan_1').value == ''){childObject.focus();}else{document.getElementById('ilce').style.display='none';document.getElementById('nvar_alan_4').style.display='block';document.getElementById('nvar_alan_5').style.display='block';}
    }
  • 25-03-2024, 00:19:41
    #2
    hocam merhaba sorununuzu çözerim 300 tl gibi bir ücret karşılığında. iletişim için whatsaptan yazabilirsiniz. 506 515 62 48
  • 25-03-2024, 00:24:46
    #3
    İlçe kısmını ilk etapta gizleyin ve il kısmını İl seçiniz olarak default ayarda bırakın. İlk seçimi olduktan sonra ilçe seçimini gösterin
  • 25-03-2024, 00:45:41
    #4
    hocam bu js kodunu sen mi yazdın Yoksa ChatGPT felan mı yazdı sen yazdıysan neden bu kadar karışık yazdını anlamadım şöyle basit bir işlem ile çözebilirdin sanki ben anlamamışta olabilirim

    var ilceler = {
        "İstanbul": ["Eminönü", "Bakırköy", "Kadıköy", "Maltepe", "Karaköy"],
        "Ankara": ["Çankaya", "Keçiören", "Yenimahalle", "Gölbaşı", "Etimesgut"]
    };
    
    
    function updateIlceler() {
        var ilSelect = document.getElementById('il');
        var ilceSelect = document.getElementById('ilce');
        var selectedIl = ilSelect.value;
    
      
        ilceSelect.innerHTML = '';
    
      
        if (selectedIl in ilceler) {
            for (var i = 0; i < ilceler[selectedIl].length; i++) {
                var option = document.createElement('option');
                option.text = ilceler[selectedIl][i];
                option.value = ilceler[selectedIl][i];
                ilceSelect.add(option);
            }
        }
    }
    
    
    document.getElementById('il').addEventListener('change', updateIlceler);
    
    
    updateIlceler();
  • 25-03-2024, 14:07:31
    #5
    Pos3idon, istediğim kod çalıştı ama ilk seçenek yani "eminönü" seçili geliyor. Mesela, veritabanındaki ilçe "Bakırköy" olduğunda da "Eminönü" geliyor. Kodu ben yazmadım. Yazsaydım zaten, benim için sorun olmazdı. Bu arada çok teşekkür ediyorum. Az bir kod ile çalıştırdın. Üç beş gündür uğraşıyordum.
  • 26-03-2024, 15:28:29
    #6
    Sorunun ilk kısmı yani diğer ilçelerin Select içine gelmemesi sorunu çözüldü ama ikinci kısım olan, veritabanındaki verinin seçili hale gelmemesi sorunu çözülmedi. Yardımcı olabilirseniz sevinirim.
  • 26-03-2024, 18:39:55
    #7
    sorunu detaylı yaz hocam bakalım
  • 26-03-2024, 21:02:01
    #8
    Veri tabanında il kısmı "İstanbul", ilçe kısmı ise "Bakırköy" olmasına rağmen güncelle sayasında il ksmı "İstanbul", ilçe kısmı ise "Eminönü" seçili geliyor. Hâlbuki veri tabanındaki "Bakırköy" ün seçili gelmesi gerekli. "Eminönü" ilk ilçe olduğu için o seçili geliyor.
  • 27-03-2024, 22:54:29
    #9
    Benim sorunum güncel.
    Arkadaşlar şu benim sorunuma bir el atsanız.