v2.5.2
Giriş yap

Php ile Json Dosyanın İçine Veri Yazdırma Sorunu

yazilimyolcusu
256 defa görüntülendi

Arkadaşlar bir problemim var. ".Json" dosyanın içine verileri yazdırıyorum ama sadece bir adet veri yazıyor. Rsimleri aktarmada bir problem yok. Diğerleri için şu uyarıyı veriyor. ve ".json" dosyasının içine sadece en son resmi yazıyor. Diğerlerini yazmıyor.
Creating default object from empty value in
Kodlar aşağıda resim de yardımcı olacaktır.

form.php

<form action="galeriformislem.php" method="POST"  enctype="multipart/form-data">
    <div class="col-lg-12 p-1 text-white mt-1">
        <input type="file" name="dosya[]" required multiple>
    </div>
    <br>
     
    <div class="col-lg-12 p-1 text-white mt-1">
        <input type="file" name="dosya[]" required multiple>
    </div>
     
    <br>
    <div class="col-lg-12 p-1 text-white mt-1">
        <input type="file" name="dosya[]" required multiple>
    </div>
     
    <br>
    <div class="col-lg-12 p-1 text-white mt-1">
        <input type="file" name="dosya[]" required multiple>
    </div>
    <br>
    <div class="col-lg-12 p-1 text-white mt-1">
        <input type="number" name="icerikid[]" placeholder="İçerik Id" required>
    </div>
    <br>
    <input type="submit" value="Ürünü Kaydet">    
</form>

galeriformislem.php

<?php
    if(isset($_FILES['dosya'])) {
        $dosya_sayisi = count($_FILES['dosya']["name"]);
        for($i=0; $i<$dosya_sayisi; $i++) {
          $dosya_adi =  $_FILES['dosya']["name"][$i];
          $gecici_yol = $_FILES['dosya']["tmp_name"][$i];
          $icerikid = $_POST['icerikid'];
           
          foreach($icerikid as $index => $names) {
            $icerikid = $names;
            $filename = $icerikid.".json";
            $myObj->ss_dosya_adi = $dosya_adi;
            $dizijson = json_encode($myObj);
            file_put_contents($filename, $dizijson);
            if(move_uploaded_file($gecici_yol, "../../images/indexurunler/" . $dosya_adi)) {
                echo "Aktarıldı";
            }
        }
    }
}
?>

https://www.hizliresim.com/dst3azj
https://www.hizliresim.com/r0wv4pm

devepdogukan
456 gün önce

En son resmi koymasının sebebi foreach ile dönerek ss_dosya_adi adlı fieldi güncelliyorsun. Burası bir array olmalı ve arrayin icine eskileride alıp yenisini pushlaman gerek.Böyle sadece x = 1 , x = 2 demiş gibi olursun

 $myObj->ss_dosya_adi = [];
 
    foreach($icerikid as $index => $names) {
            $icerikid = $names;
            $filename = $icerikid.".json";
            array_push($myObj->ss_dosya_adi,$dosya_adi);
            $dizijson = json_encode($myObj);
            file_put_contents($filename, $dizijson);
            if(move_uploaded_file($gecici_yol, "../../images/indexurunler/" . $dosya_adi)) {
                echo "Aktarıldı";
            }
    }