Select Option ile veritabanındaki veriyi seçili hale getirmek.
Merhaba, ürün ekle sayfasından option ile verileri ürün tablosuna ekliyorum.
Ürün düzenleme sayfasında en son eklenen veri geliyor. Update edince her seferinde aynı kategori başlığını post eder.
Amacım db üzerinden tüm kategoriler gelecek ama option inputunda önceden insert edilen veri seçili gelmesini istiyorum.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (11)
Hacım senin paylaştığın php kod da doğru, burada mantık hatası yapmışım muhtemelen. Ürün tablosunda zaten tek bir kategori var :) tüm veriyi döndürüyor aslında ama o kolonda başka kategori olmadığı için sadece ürüne ait kategoriyi dönderiyor.
Muhtemelen biraz uğraşınca ortaya çıkar, tekrar burada paylaşırım. İhtiyacı olan faydalanır.
$productgo
bu değişkeni yazdırdığında istediğin veriler geliyormu yoksa sadece son ürünün verisimi geliyor.
Eğer son ürünün verisi geliyorsa SQL kodunu ona göre düzenlemelisin.
@makifgokce cevabın için teşekkür ederim, farklı bir yapıyla bu sonucu aldım, fakat seçili option + seçili olmayanlarda listelenmeli ki değişiklik yapılabilsin.
Senin kodunla da çalıştırdım. Sanırım INNER JOIN ile ilgili bir mantık hatası var. Teşekkür ederim ilgilendiğin için.
<?php foreach ($productgo as $i => $kategori) {?>
<option value="<?php echo $kategori['katid']; ?>" <?php echo ($i == key(end($productgo))) ? 'selected' : ''?>><?php echo $kategori['kategoriadi'];?></option>
<?php } ?>
son eleman a selected
attribute'ü ekleyecektir.
Aşağıdaki kod bloğuyla sadece seçili olanı alıyor, aynı zamanda diğer kategorilerde görüntülenmeli ki; Yanlış kategori seçilmişse ürün düzenleme işlemlerinde kullanıcı kategoriyi UPDATE edilebilsin.
<?php $product=$connection->prepare('SELECT * FROM urun INNER JOIN kategori ON kategori.katid=urun.kategori WHERE ID=?');
$product->execute(array($_GET['id']
));
$productgo=$product->fetchAll(PDO::FETCH_ASSOC);
?>
<label class="col-md-3 control-label" for="inputDefault">Kategori</label>
<div class="col-md-6">
<select name="kategori" id="" class="form-control">
<?php foreach ($productgo as $kategori) {?>
<option value="<?php echo $kategori['katid']; ?>" ><?php echo $kategori['kategoriadi'];?></option>
<?php } ?>
</select>
</div>
</div>
https://prototurk.com/soru/2187-option-value-degerini-selected-olarak-getirmek
bende sormuştum. Sanırım inner join ile kategori tablonu ve ürünler tablonu birleştirip foreach ile kategori adlarını döndüreceksin
value olarak eğer kategori tablosundaki id ile ürün tablosundaki id eşleşiyorsa
selected value olarak kategori id yi getir
eşleşmiyorsa tüm kategorileri listele demen lazım
sözel ifadesi bu ama koda dökemem :) bilgim çok yok.