v2.5.2
Giriş yap

json verisi yada array ile ilgili key sorunu.

webman
367 defa görüntülendi
    // kodlarınız buraya eklenecek
<div class="sertifika_bolum">
    <div class="form-group">
        <div class="row">
            <label class="col-lg-3 col-form-label">Sertifika Adı</label>
            <div class="col-lg-9">
                <input type="text" class="form-control" name="sertifika[]" value=""
                       placeholder="Sertifika adını yazınız.">
            </div>
        </div>
    </div>
    <div class="form-group">
        <div class="row">
            <label class="col-lg-3 col-form-label">Sertifika Fiyatı</label>
            <div class="col-lg-2">
                <input type="text" class="form-control" name="sertifika[]" value=""
                       placeholder="Sertifika fiyatını yazınız.">
            </div>
        </div>
    </div>
</div>

Böyle bir kod mevcut. Bu şekilde tekli veritabanına yazdırabiliyorum ancak 1 den fazla sertifika ekleteceğim zaman yeni sertifika ekle butonu koydum ve javascript ile bu bölümü hallettim. sadece 1 den fazla sertifika olunca aşağıdaki şekilde dizi oluşuyor. sertifika-1 sertifika-2 şeklinde nasıl oluşturabilirim yada ne önerirsiniz. teşekkürler.

[sertifika] => Array
    (
        [0] => sertifika 1
        [1] => sertifika 1 fiyat
        [2] => sertifika 2
        [3] => sertifika 2 fiyat
    )
trsherlock
850 gün önce

Yukarıdaki çıtkı senin verilere ulaşmanı pek sağlamaz. 4 satırdan hangisi sertifika adı hangisi tutar tespit etmen zor.
Birinci örneğimde satır ekletip indis verdirirsen ["name"=>"Sertifika 1", "amount"=>"500.5"] gibi anahtar=>değer şeklinde bir nesne oluşur.
foreach($_POST[sf] as $val) {$val["name"]."-".$val["amount"]} kullanarak değerlere ulaşabilirsin.

Birinci yöntem aslında güzel kötü tarafı indis verdirmek, belki özel bir kullanımı vardır ama ben bilmiyorum.
Şimdilik js.Jquery yardımı ile yeni satır ekletirken indis ekletilebilir.

İkinci yöntem indis vermek istemezsen yapabileceğin bir yöntem.

Birinci Yöntem

<form action="test.php" method="post">
    <div class="row">
        <input type="text" name="sf[0][name]" value="Sertifika 1">
        <input type="number" name="sf[0][amount]" value="300">
    </div>
    <div class="row">
        <input type="text" name="sf[1][name]" value="Sertifika 2">
        <input type="number" name="sf[1][amount]" value="400.50">
    </div>
    <input type="submit" value="Kaydet">
</form>
<script>
        $("#plus").on("click", ()=>{
            let indis = $("#sertifikalar").find(".row").length
            let insertRow = `<div class="row"><input type="text" name="sf[${indis}][name]" value="Sertifika 1">`
            insertRow += `<input type="number" name="sf[${indis}][amount]" value="1000.50"></div>`
            $("#sertifikalar").append(insertRow)
        })
    </script>
Array
(
    [sf] => Array
        (
            [0] => Array
                (
                    [name] => Sertifika 1
                    [amount] => 300
                )

            [1] => Array
                (
                    [name] => Sertifika 2
                    [amount] => 400.50
                )

        )

)

Bu çıktı pek hoşuma gitmedi. foreach($_POST[sf][name] as $key=>$val) ile $key yardımı ile $_POST[sf][name][$key]."-".$_POST[sf][amount][$key] kullanarak bilgilere ulaşabilirsin.

İkinci Yöntem

<form action="test.php" method="post">
    <div>
        <input type="text" name="sf[name][]" value="Sertifika 1">
        <input type="number" name="sf[amount][]" value="300">
    </div>
    <div>
        <input type="text" name="sf[name][]" value="Sertifika 2">
        <input type="number" name="sf[amount][]" value="400.50">
    </div>
    <input type="submit" value="Kaydet">
</form>
Array
(
    [sf] => Array
        (
            [name] => Array
                (
                    [0] => Sertifika 1
                    [1] => Sertifika 2
                )

            [amount] => Array
                (
                    [0] => 300
                    [1] => 400.50
                )

        )

)