Arkadaşlar bi konuda acil yardımlarınıza ihtiyacım var.
Bit bot yapıyorum. İl adlarını çekip select option ile listeliyorum. İlçeleri de çektim ve bir değişkene atıyorum. Benim yapmak istediğim il seçilince hemen altta ilçe ksımında o ile ait çektiğim ilçe isimlerinin de gelmesini istiyorum. Bunu bir türlü yapamadım.
Bot Yapımı-Acil Yardım
15
●955
- 30-01-2017, 11:56:50
iller ; <select name="" id="il"> . . . </select> ilçeler <select name="" id="ilce"> . . . </select> <script> $(document).ready('onchange','#il',function(){ var id = $(this).val(); $.ajax({ type: 'POST', url: 'post edilecek url', data: 'id=' + id, success: function (data) { $('#ilce').html(data); } }); }); </script>Şeklinde kullanabilrsiniz.
** ilk sayfa açıldığında hangi il seçili olarak geliyorsa o ilin ilçelerini ilçeler select inin içina yazdırırsınız, sonrasında farklı bir il seçildiği zaman o ilin ilçeleri listelenir.
*** kodu denemedim, yazım hatası olabilir. - 30-01-2017, 12:10:16sehzadem adlı üyeden alıntı: mesajı görüntüle
Hocam benim kodlar aşağıdaki şekilde. Bu dediklerinizi nasıl entegre edicem. Bu kodlarla illeri çekip listeye atıyorum.
<?php $baglan=baglan("http://www.eczanesorgulama.com/"); preg_match_all('#<li><a title="(.*?)" href="(.*?)"> <strong>(.*?)</strong> <small>(.*?)</small> </a></li>#',$baglan,$kategori); $kategorilink=$kategori[2]; $kategoribaslik=$kategori[3]; if ($kategori = $_GET["kategori"]){ $link = "http://www.eczanesorgulama.com/{$kategori}-nobetci-eczaneleri.html"; } $kategoribaglan = baglan($link); preg_match_all('#<a title="(.*?)" href="(.*?)"><strong>(.*?)</strong> <small>Nöbetçi Eczane</small></a><br />#',$kategoribaglan,$kategoriilce); ?> <form action="" method="get" class="form-5 clearfix"> <p> <select name="kategori" class="il" id="il"> <option value="0"><span>Şehir Seçiniz</span></option> <option value="adana"><span>Adana</span></option> <?php for ( $i = 1; $i < count($kategorilink); $i++){ preg_match('#http://www.eczanesorgulama.com/(.*?)-nobetci-eczaneleri.html#',$kategorilink[$i],$url); ?> <option <?php echo $_GET["kategori"] == $url[1] ? 'selected' : null; ?> value="<?php echo $url[1]; ?>"> <?php echo $kategoribaslik[$i]; ?></option> <?php } ?> </select> - 30-01-2017, 12:29:12Hocam bence yanlış yoldan ilerliyorsunuz,
Öncelikle elinizde il ve ilçe bilgileri olsun. Veri tabanı kullanıyorsanız tablo olarak, veri tabanı yoksa dizi olarak, xml olarak yada json veri olarak il ve ilçe bilgilerini elde tutun.
sonrasında ilk select içinde illeri yazdırın, ikinci select içinde ise adanın ilçelerini yazdırın.
il selectinde değişklik olduğunda ilçeleri değiştirirsin.
verileri değişim esnasında istiyorsan il ve ilçe selectinde değişiklik olduğunda uzak siteden verileri çekersin ya da il ve ilçe seçildikten sonra butona tıklandığında uzak siteden verileri çekebilirsin.
* tüm il ve ilçelerin verileri olmama ihtimaline karşılık, sorgudan gelen değer boş ise(istendiği gibi gelmiyorsa) bu il-ilçe için veri yoktur şeklinde uyarı verirsin daha rahat olur. - 30-01-2017, 12:55:58Hocam verdiğiniz bilgileri için çok teşekkürler. Ben seçilen ile göre sorgula tuşuna basıldığında ilçeleri de çekiyorum. bu kodla ;sehzadem adlı üyeden alıntı: mesajı görüntüle
?php preg_match_all('#<a title="(.*?)" href="(.*?)"><strong>(.*?)</strong> <small>Nöbetçi Eczane</small></a><br />#',$kategoribaglan,$kategoriilce); print_r($kategoriilce[3]); ?>Fakat bundan sonrasını beceremedim. Yani select option a atamadım bu değerleri.
Örnek link :http://ruyatabirleriara.com/eczane1
Sizin dediklerinizin örnek bir kod uygulaması var mı? Yada yapabilir misiniz. - 30-01-2017, 14:02:59Hocam bu mantıklada çekebilirsiniz sorun olmaz ancak, performans açısından il ve ilçeleri çekmeden elde tutmanız daha iyi olur.
Sizin sisteminizde ilçerleri çekmek içinde aynı mantığı uygulıyorsunuz, ama çektiğiniz ilçeler ile ait değiller, örneğin kaş ilçesi antalyaya ait, ama adana ilinde gösteriliyor.
çok uzatmayayım bu mantıkla devam edecekseniz;
ilçeleri aldığınız kısmı farklı bir php dosyasına taşıyın, ajax ile il seçilince il ismini bu dosyaya post edin. çektiğiniz ilçe listesini direk echo ile yazdırın. ajax tan gelen değeri ilçe selectinin içine yazdırın.
** ama özellikle belirtiyorum. Bu şekilde verimli çalışmaz botunuz. - 30-01-2017, 14:08:37Çok teşekkürler hocam, dediklerinizi uygulamaya çalışıyım.sehzadem adlı üyeden alıntı: mesajı görüntüle
- 31-01-2017, 18:28:00Hocam ajax beceremedim. Sizden ricam örnek bi kod varmı, yada yapabilir misiniz. Hatta illeride elde tutmanız daha iyi olur demiştiniz. bunlar için var mı bi örnek uygulamanız.sehzadem adlı üyeden alıntı: mesajı görüntüle
- 31-01-2017, 20:44:41illeri ve ilçeleri veri tabanında tuttuğunuzu varsayıyorum. Veri tabanı işlemleri için ise pdo kullanırsanız ;ramul77 adlı üyeden alıntı: mesajı görüntüle
* pdo kullanmazsanız, mysql_ li veri tbanı fonksiyonları kullanmak isterseniz, sql cümleciklerini mysql_query içine kopyalamanız işinizi görür.
* güncel mysql il ilçe tablosu şeklinde aratırsanız bulursunuz.
<select name="il" id="il"> <?php $iller = $db->query("SELECT * FROM iller ORDER BY il_adi ASC"); foreach($iller as $il) { ?> <option value="<?php echo $il['id'];?>"><?php echo $il['il_adi'];?></option> <?php } ?> </select> <select name="ilce" id="ilce"> <?php $ilceler = $db->query("SELECT * FROM ilceler WHERE il_id='1'" ORDER BY ilce_adi ASC); foreach($ilceler as $ilce) { ?> <option value="<?php echo $ilce['id'];?>"><?php echo $ilce['ilce_adi'];?></option> <?php } ?> </select> <script> $(document).on('change','#il',function() { $.ajax({ type: 'POST', url: 'ajax.php', data: 'id='+$(this).val(), success: function (data) { $('#ilce').html(data); } }); }); </script>alttaki kodları aynı dizinde ajax.php dosyasını açarak içine kaydedin.
<?php $il_id = $_POST['id']; $ilceler = $db->query("SELECT * FROM ilceler WHERE il_id='$il_id'" ORDER BY ilce_adi ASC); foreach($ilceler as $ilce) { ?> <option value="<?php echo $ilce['id'];?>"><?php echo $ilce['ilce_adi'];?></option> <?php } ?>