Php ile Json Dosyanın İçine Veri Yazdırma Sorunu
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
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (3)
Üç değişik hata verdi ve ".json" dosyası içine hiç bir aktarım yapılmadı.
Creating default object from empty value in
Undefined variable: icerikid in
Invalid argument supplied for foreach() in
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ı";
}
}