• 14-02-2023, 20:50:16
    #1
    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ı";
                }
            }
        }
    }
        ?>

  • 15-02-2023, 00:14:27
    #2
    Yanlış biliyorsam düzeltin. Bütün file inputlarına aynı name değerini verdiğiniz için en son gönderilen "dosya" verisini kullanır. Ya tek input file içinde dosya[ ] olarak kullanın ya da diğer file inputların name değerini değiştirin. Uzun zamandır php ile ilgilenmediğim için tam olarak kodları çözümleyemedim. İyi günler.
  • 15-02-2023, 01:57:06
    #3
    $dosya_adi değişkeni for döngüsü içine alınmış dolayısıyla her döngüde değişkene atanan veri değişiyor. Şöyle yaparsanız tüm dosyaların name değerlerini array olarak tutabilir ve json dosyasına yazabilirsiniz:
    $dosya_adi[] = $_FILES['dosya']["name"][$i];
    Ayrıca for döngüsünden önce $dosya_adi = [] ; eklemeyi unutmayın lütfen
  • 15-02-2023, 21:40:54
    #4
    Evet dosyaları çalıştırabildim, hata da verdi ama çalışıyor. Bir soru daha sorayım. json dosyası olup olmadığını nasıl kontrol edebilirim? Form aracılığıyla json dosyasını oluşturuyorum ama mesela, bir json dosyası olup olmadığını index sayfası nereden anlayacak. Yani Eğer ben "admin/panel/1.json" diye yol verirsem oluyor ama ben bir json dosyası eklediğimde bunu otomatik olarak "index.php" sayfasının algılaması lazım. Yani kısacası json dosyası olup olmadığını nasıl kontrol edebilirim?
  • 16-02-2023, 00:53:34
    #5
    Developer
    CodingStudent adlı üyeden alıntı: mesajı görüntüle
    Evet dosyaları çalıştırabildim, hata da verdi ama çalışıyor. Bir soru daha sorayım. json dosyası olup olmadığını nasıl kontrol edebilirim? Form aracılığıyla json dosyasını oluşturuyorum ama mesela, bir json dosyası olup olmadığını index sayfası nereden anlayacak. Yani Eğer ben "admin/panel/1.json" diye yol verirsem oluyor ama ben bir json dosyası eklediğimde bunu otomatik olarak "index.php" sayfasının algılaması lazım. Yani kısacası json dosyası olup olmadığını nasıl kontrol edebilirim?
    file_exists ile kontrol edebilirsiniz
    https://www.php.net/manual/tr/function.file-exists.php
  • 18-02-2023, 20:30:00
    #6
    file_exists ile kontrol sağlanabiliyor ama eklediğim ürünün adı "1.json" bu dosyanın olup olmadığını nasıl kontrol edeceğim. Yani bana şöyle bir şey lazım. Json dosyası varsa gibi.
  • 18-02-2023, 22:24:20
    #7
    if(isset($_FILES['dosya']) && isset($_FILES['dosya']['name']) && !empty($_FILES['dosya']['name'])){
        $icerikid = $_POST['icerikid'];
        $_json = [];
        foreach($_FILES['dosya']['name'] as $_key => $dosya_adi){
            $gecici_yol = $_FILES['dosya']['tmp_name'][$_key];
            if(move_uploaded_file($gecici_yol, "../../images/indexurunler/" . $dosya_adi)) {
                $_json[] = ['ss_dosya_adi' => $dosya_adi];
                echo $dosya_adi.' aktarildi'.PHP_EOL;
            }else{
                echo $dosya_adi.' aktarilamadi'.PHP_EOL;
            }
        }
        if(!empty($_json)){
            file_put_contents($icerikid.'.json', json_encode($_json));
        }
    }
  • 19-02-2023, 20:52:40
    #8
    trgino bu konuyu hallettim. Şu anki problemim oluşturduğum ".json" dosyasını "index.php" de nasıl listeletebilirim. Yani şöyle bir kod lazım bana. "admin/panel/" dizininde json dosyası varsa kodu. Yani ben ".json" dosyasını "1.json" diye oluşturdum. Index sayfasında
    if(file_exists(.json))
    gibi bir şey lazım.
  • 20-02-2023, 03:31:41
    #9
    Developer
    CodingStudent adlı üyeden alıntı: mesajı görüntüle
    trgino bu konuyu hallettim. Şu anki problemim oluşturduğum ".json" dosyasını "index.php" de nasıl listeletebilirim. Yani şöyle bir kod lazım bana. "admin/panel/" dizininde json dosyası varsa kodu. Yani ben ".json" dosyasını "1.json" diye oluşturdum. Index sayfasında
    if(file_exists(.json))
    gibi bir şey lazım.
    if(file_exists('1.json')){
        //dosya var
    }else{
        //dosya yok
    }
    klasör için de aynı:

    if(file_exists('admin/panel/1.json')){
    //dosya var
    }else{
    //dosya yok
    }