Php'de Select-Option ile Id Çekme
Benim sorunum şu:
Select Option ile "Konya" yı seçtiğimde "Konya" nın id'si gelsin istiyorum. "Ankara" yı seçtiğimde "Ankara" nın id'si gelsin istiyorum. En son Ankarayı ekledim id si 37. Konya yı ekledim 36. id ile. Galiba javascript ile yapılabiliyor ama ben beceremedim. Yardım edebilir misiniz?
<html>
<h4><u> Albüme Resim Yükle </u></h4>
<form action="a.php" method="post" enctype="multipart/form-data">
<label style="font-size:16px;" for="albumsec">Albüm Seç</label>
<select style="margin-left:10px;" id="album" name="albumsec" onchange="deger();">
<?php
$resimalbumusorgulistesi=$db->prepare("SELECT * FROM resimalbumu");
$resimalbumusorgulistesi->execute(array());
$resimalbumusorgusu=$resimalbumusorgulistesi->fetchAll(PDO::FETCH_ASSOC);
foreach($resimalbumusorgusu as $resimalbumu) {
?>
<option value="<?php echo $resimalbumu['resimalbumu_id']; ?>"><?php echo $resimalbumu['resimalbumu_adi']; ?></option>
<?php } ?>
</select>
<br>
<input type="text" name="sirasi" style="text-align:center;">
<br><br>
<input type="text" name="idsi" style="text-align:center;" id="id" value="<?php echo $resimalbumu['resimalbumu_id']; ?>">
<br><br>
<input type="file" name="files[]" value="Resim Yükle" />
<br>
<button style="margin-top:7px; width:90px; height:30px; background-color:green; color:#fff; border-radius:7px;" name="submit">Gönder</button>
</form>
</html>
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (4)
Öncelikle teşekkür ederim. 1 haftadır uğraşıyorum buna. Javascript'i çok iyi öğreneceğim, bunun kaçarı yok.
"Input" "foreach" in dışında değil. Sormak istediğim şeyler var. İnternette baktığımda "queryselector" için "eşleşen ilk
kaydı bulma" işlemini yaptığını söylüyor. Yani "id" olsun, "name" olsun, hangisi "album" kelimesine uyarsa onu bul diyor
galiba.
"addEventListener" ise burada şu işe yarıyor anladığım kadarıyla: verilen "id" için bir olay varsa mesela "change" gibi
onun çalışmasını sağlıyor. Yalnız "change" den sonrayı anlayamadım.
"() => { id.value = album.value;"
Parantezlerin, ok işaretinin görevini ve aşağıda "id" leri neden birbirine atadık anlayamadım.
Bir de veritabanından çekerken çekilen "id" son eklenen "id" ama "option" da görünen
bir önceki seçenek. Yani ilk seçenek "İstanbul" => "id" => "1"
İkinci seçenek "İzmir" => "id" => "2"
Ekranda görünen "İstanbul" => "2" şeklinde.
'() =>' bu aslında 'function()' yazımının kısa hali yani,
album.addEventListener('change', function() { id.value = album.value; });
Böylede yazılabilirdi.
Birbirine atama olayı dediğin yerde,
album dediğim senin select etiketin.
id dedigim ise ekranda select ile seçtiğin option, değerini göstericek olan input.
Şimdi sen select ile herhangi bir şey seçtiğinde seçtiğin şeyin option value değerini,
var album = document.querySelector('#album');
Bu şekilde alıyoruz misal istanbul seçtin idsi 34 olsun artık album değişkeninde 34 değeri var sonrasın da tek yapmak gereken ekrandaki inputta bunu göstermek o inputu da şu şekilde tanımlamıştık.
var id = document.querySelector('#id');
/*
Bundan sonra ki kısımda da şunu diyorum, Eğer select ile herhangi bir şey seçilirse onun değerini al ve inputun değerine yaz.
*/
album.addEventListener('change', () => { id.value = album.value; });
Ve de Foreach parantezleri burada
parantezlerin dışında olanı
<!-- Eski hali -->
<input type="text" name="idsi" style="text-align:center;" id="id" value="<?php echo $resimalbumu['resimalbumu_id']; ?>">
<!-- Yeni hali -->
<input type="text" name="idsi" style="text-align:center;" id="id">
Şeklinde düzelt
"option" kısmına "selected="selected" ekledim ve istediğimi yaptım. Çok teşekkür ederim.
<input type="text" name="idsi" style="text-align:center;" id="id" value="<?php echo $resimalbumu['resimalbumu_id']; ?>">
<!-- Bu kısım foreach dışında kalmış, çalışmıyordur. -->
var album = document.querySelector('#album'); // Select
var id = document.querySelector('#id'); // Input
album.addEventListener('change', () => {
id.value = album.value;
});