İl, ilçe, mahalle kodlarına farklı bir sayfadan ulaşma problemi
Aşağıdaki il, ilçe ve mahalle kısmını a.php sayfasında tutup, b.php sayfasına çekmek istiyorum. b.php sayfasını a.php sayfasına include ediyorum ama il, ilçe ve mahalleler selectbox'da yüklü gelmiyor. Daha doğrusu il selectbox'ı yüklü gelmiyor. Diğerleri ona bağlı olarak gelecek çünkü. Aşağıdaki kodlar çalışıyor. Bir sorun yok kodlarda. İl, ilçe ve mahalle kısmı yüz yirmi bin satır ediyor. Bu da sayfanın geç açılmasına sebep oluyor. Performans açısından yorucu bir durum. Kodlar aşağıda. Anlatmak istediğimi anlatamadıysam sormaktan çekinmeyiniz.
<?php
// İl bilgisi
$il = isset($_GET['il']) ? $_GET['il'] : '';
if (!empty($il)) {
$il = mysqli_real_escape_string($db, $_GET['il']);
$filters[] = "yenieklenenler_il = '$il'";
}
// İlçe bilgisi
$ilce = isset($_GET['ilce']) ? $_GET['ilce'] : '';
if (!empty($ilce)) {
$ilce = mysqli_real_escape_string($db, $_GET['ilce']);
$filters[] = "yenieklenenler_ilce = '$ilce'";
}
// Mahalle bilgisi
$mahalle = isset($_GET['mahalle']) ? $_GET['mahalle'] : '';
if (!empty($mahalle)) {
$mahalle = mysqli_real_escape_string($db, $_GET['mahalle']);
$filters[] = "yenieklenenler_mahalle = '$mahalle'";
}
?>
<!-- İl Seçimi -->
<div>
<label for=""><?php echo $dil["a76"]; ?></label>
<select name="il" id="il" onchange="ilDegisti()">
<!-- Seçilen ili ilk sıraya ekle -->
<?php if (!empty($il)): ?>
<option value="<?php echo $il; ?>" selected><?php echo $il; ?></option>
<?php else: ?>
<option value="">Bir il seçiniz</option>
<?php endif; ?>
</select>
</div>
<!-- İlçe Seçimi -->
<div>
<label for=""><?php echo $dil["a77"]; ?></label>
<select name="ilce" id="ilce" onchange="ilceDegisti()">
<!-- Seçilen ilçeyi ilk sıraya ekle -->
<?php if (!empty($ilce)): ?>
<option value="<?php echo $ilce; ?>" selected><?php echo $ilce; ?></option>
<?php else: ?>
<option value="">Bir ilçe seçiniz</option>
<?php endif; ?>
</select>
</div>
<!-- Mahalle Seçimi -->
<div>
<label for=""><?php echo $dil["a130"]; ?></label>
<select name="mahalle" id="mahalle">
<!-- Seçilen mahalleyi ilk sıraya ekle -->
<?php if (!empty($mahalle)): ?>
<option value="<?php echo $mahalle; ?>" selected><?php echo $mahalle; ?></option>
<?php else: ?>
<option value="">Bir mahalle seçiniz</option>
<?php endif; ?>
</select>
</div>
<script>
const sehirler = [
{
"sehir_id": "1",
"sehir_adi": "ADANA"
},
{
"sehir_id": "2",
"sehir_adi": "ADIYAMAN"
}]
</script>
<script>
const ilceler = [
{
"ilce_id": "1104",
"ilce_adi": "SEYHAN",
"sehir_id": "1",
"sehir_adi": "ADANA"
},
{
"ilce_id": "1219",
"ilce_adi": "CEYHAN",
"sehir_id": "1",
"sehir_adi": "ADANA"
}];
const mahalleler = [
{"mahalle_id":"72","mahalle_adi":"2000 EVLER MAHALLESİ","ilce_id":"1104","ilce_adi":"SEYHAN","sehir_id":"1","sehir_adi":"ADANA"},
{"mahalle_id":"1","mahalle_adi":"AHMET REMZİ YÜREĞİR MAHALLESİ","ilce_id":"1104","ilce_adi":"SEYHAN","sehir_id":"1","sehir_adi":"ADANA"},
{"mahalle_id":"2","mahalle_adi":"AKKAPI MAHALLESİ","ilce_id":"1104","ilce_adi":"SEYHAN","sehir_id":"1","sehir_adi":"ADANA"}];
// Sayfa yüklendiğinde veya il seçildiğinde şehir dropdown'ını doldur
window.onload = function() {
populateIlDropdown();
if (document.getElementById("il").value !== "") {
populateIlceDropdown();
}
if (document.getElementById("ilce").value !== "") {
populateMahalleDropdown();
}
};
function populateIlDropdown() {
const ilDropdown = document.getElementById("il");
const selectedIl = "<?php echo $il; ?>"; // PHP'den gelen seçili il bilgisi
// Eğer PHP'de seçilen bir il varsa, bu ili seçeneklerden kaldır
sehirler.forEach(sehir => {
if (sehir.sehir_adi !== selectedIl) {
const option = document.createElement("option");
option.value = sehir.sehir_adi;
option.text = sehir.sehir_adi;
ilDropdown.appendChild(option);
}
});
}
function ilDegisti() {
populateIlceDropdown();
document.getElementById("mahalle").innerHTML = '<option value="">Bir mahalle seçiniz</option>'; // Mahalle sıfırlanır
}
function populateIlceDropdown() {
const ilceDropdown = document.getElementById("ilce");
const selectedIl = document.getElementById("il").value;
ilceDropdown.innerHTML = '<option value="">Bir ilçe seçiniz</option>'; // İlçeleri sıfırla
const ilgiliIlceler = ilceler.filter(ilce => ilce.sehir_adi === selectedIl);
ilgiliIlceler.forEach(ilce => {
const option = document.createElement("option");
option.value = ilce.ilce_adi;
option.text = ilce.ilce_adi;
ilceDropdown.appendChild(option);
});
}
function ilceDegisti() {
populateMahalleDropdown();
}
function populateMahalleDropdown() {
const mahalleDropdown = document.getElementById("mahalle");
const selectedIlce = document.getElementById("ilce").value;
mahalleDropdown.innerHTML = '<option value="">Bir mahalle seçiniz</option>'; // Mahalleleri sıfırla
const ilgiliMahalleler = mahalleler.filter(mahalle => mahalle.ilce_adi === selectedIlce);
ilgiliMahalleler.forEach(mahalle => {
const option = document.createElement("option");
option.value = mahalle.mahalle_adi;
option.text = mahalle.mahalle_adi;
mahalleDropdown.appendChild(option);
});
}
</script>
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (0)
Henüz kimse cevap yazmadı. İlk cevap yazan sen ol!