v2.5.2
Giriş yap

Php güncelleme işleminde checkbox ve selectbox seçili gelmiyor?

yazilimyolcusu
314 defa görüntülendi ve 3 kişi tarafından değerlendirildi

Arkadaşlar merhaba. Text, checkbox, select karışık bir form var. Veritabanına kayıt yapabiliyorum. Text'te bir sorun yok ama select ve checkbox'ları düzenlemek istediğimde veriler checkbox'ta tik'li, selectbox'ta seçili gelmiyor. Nasıl yapılır acaba, bir örnek koyabilir misiniz?

ebykdrms
287 gün önce

Input'lara php ile veri basılıyorsa, input için value özelliği kullanılır ama checkbox için checked özelliği kullanılır.
Veritabanından aldığın veriyi hangi değişkenlerle aldığını bilmediğim için uyduracağım:
Tüm kayıtları çektiysen (örneğimizde Veri 1 ve Veri 3 olm.üz. 2 kayıt var) şöyle bir değişkenin var diye varsayalım:

$datas = [
    ["ekle_ad" => "yazilimyolcusu", "ekle_ozellik" => "Veri 1"],
    ["ekle_ad" => "yazilimyolcusu", "ekle_ozellik" => "Veri 3"]
];

Bu durumda ekle_ad bölümü zaten aynı olduğu için ilk kaydı alabiliriz:

$ad = $datas[0]->ekle_ad;

ekle_ozellik verilerini de düz bir dizi içinde toplarsak html içine gömmek kolaylaşır.

foreach($datas as $data) $aktifOzellikler[] = $data->ekle_ozellik;
// $aktifOzellikler dizisi şöyle oldu: ["Veri 1", "Veri 3"]

$checkbox1_attr = array_search("Veri 1", $aktifOzellikler)===false ? '' : 'checked'; // 'checked'
$checkbox2_attr = array_search("Veri 2", $aktifOzellikler)===false ? '' : 'checked'; // ''
$checkbox3_attr = array_search("Veri 3", $aktifOzellikler)===false ? '' : 'checked'; // 'checked'
<form action="x.php" method="post">
    <input class="x-text" type="text" name="ad" placeholder="Ad" value="<?=$ad?>" ><br>    
    <input class="x-checkbox" type="checkbox" <?=$checkbox1_attr?> name="ozellikler[]" value="Veri 1" placeholder="Veri 1" ><br>
    <input class="x-checkbox" type="checkbox" <?=$checkbox2_attr?> name="ozellikler[]" value="Veri 2" placeholder="Veri 2" ><br>
    <input class="x-checkbox" type="checkbox" <?=$checkbox3_attr?> name="ozellikler[]" value="Veri 3" placeholder="Veri 3" ><br>
</form>

Kodları denemeden direkt buraya yazdığım için syntax hataları veya kurgusal hatalar olabilir.