v2.5.2
Giriş yap

Php'de Select-Option ile Id Çekme

yazilimyolcusu
2,206 defa görüntülendi

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>
Cevap yaz
Cevaplar (4)
yazilimyolcusu
1389 gün önce

Ö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.

onlywhatchess
1389 gün önce

'() =>' 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

yazilimyolcusu
1389 gün önce

"option" kısmına "selected="selected" ekledim ve istediğimi yaptım. Çok teşekkür ederim.

onlywhatchess
1389 gün önce
<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;
});