Select e yazmaya başlayınca kayıtlar gelsin istiyorum
Şuan kullandığım kod aşağıdaki gibidir.
Bu şekilde kullandığım da çok fazla sayfa büyüyor
Ben bunun yerine arama yapmaya başladıkça veritabanından kayıtlar gelsin istiyorum.
Birnevi autocomplete mantığı yani.
<div class="col-md-3">
<label>Cari İl-İlçe</label>
<select class="multiselect-dropdown form-control select2-hidden-accessible" style="width: 100%;" id="cari_il_ilce" name="cari_il_ilce">
<?php
// il ilçe tablosu getirildi
foreach (get_table("SELECT * FROM tbl_il_ilce_kod" ,array()) as $key) {
echo '<option value="'.$key["id"].'">'.$key["il"]."-".$key["ilce"].'</option>';
}
?>
</select>
</div>
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (2)
Böyle birşey de yapabilirsin
<input list="cari_il_ilce" name="cari_il_ilce">
<datalist id="cari_il_ilce">
<?php foreach (get_table("SELECT * FROM tbl_il_ilce_kod" ,array()) as $key): ?>
<option value="<?=$key['il'].'-'.$key['ilce'] ?>">
<?php endforeach; ?>
</datalist>
Bunu javascript'le yapmak daha mantıklı olur, PHP'de kayıtları çekip JSON şeklinde döndürecek bir servisin olursa JS ile ajax veya fetch api kullanarak sayfaya istek yapabilirsin. Örneğin select'e yazılan yazıyı alırsın, PHP servisine Get isteği ile parametreyle gönderirsin.
// oninput olay dinleyicisiyle ne zaman bir harf girilse bu fonksiyonu çalıştır
document.querySelector('select').addEventListener('input', () => {
// hangi parametreleri göndermek istiyorsan gönder
fetch(`https://SUNUCUNDAKİ_PHP_SERVİSİ?il=${document.querySelector('select').value}`)
// gelen veriyi json'a dönüştürüyoruz
.then(res => res.json())
.then(data => {
// Burada da select elemanına option'ları ekle
});
})
$il = $_GET['il']
$tablo = get_table("SELECT * FROM " + $il, array())
echo json_encode($tablo)
gibi bir şey olabilr, PHP'de çok iyi değilim kusura bakma ama ekleme kaldırma gibi dinamik kısımlar biraz daha JavaScript'in işi