v2.5.2
Giriş yap

Php upload işleminde klasörün içine resim yolu verme sorunu

yazilimyolcusu
72 defa görüntülendi

Kök dizindeki resimler klasörüne çoklu resim yükleme ve insert işlemi yapmaya çalışıyorum. Resimleri veri tabanına girebiliyorum ve resimler klasörüne upload edebiliyorum. Ama yüklediğim resimleri bir klasöre göndermek istiyorum. Mesela, 1.jpg, 2.jpg, 3.jpg diye üç tane resim var. Bunları insert ettiğimde resimler klasörünün içinde bir klasör oluşacak, bu klasörün adı ilan numarası ile aynı olacak ve içine upload olacak. Kodlar aşağıda.

if(isset($_FILES['dosya'])) {
    $_POST['ilannumarasi'];

    for($i=0; $i<count($_FILES['dosya']['name']); $i++) {
        $dosyaadi[] = basename($_FILES['dosya']['name'][$i]);
        $yuklenendosya = $_FILES['dosya']['tmp_name'][$i];
        $hedefyol = "../../images/yenieklenenler/" . $dosyaadi[$i];
        move_uploaded_file($yuklenendosya, $hedefyol);
    }
}
Cevap yaz
Cevaplar (2)
yazilimyolcusu
31 gün önce

Sorunu yapay zeka'ya (Gemini) sordum. Çözümü şöyle verdi. Sorun çözüldü. Cevap için teşekkür ederim.

$_POST['ilannumarasi']; 
if (!mkdir("images/yenieklenenler/$ilannumarasi")) {  
   echo "Klasör oluşturma hatası!";  
   exit; 
}
 
for($i=0; $i<count($_FILES['dosya']['name']); $i++) {  
    $dosyaadi[] = basename($_FILES['dosya']['name'][$i]);   
    $yuklenendosya = $_FILES['dosya']['tmp_name'][$i];  
    $hedefyol = "images/yenieklenenler/$ilannumarasi/" . $dosyaadi[$i];  
    move_uploaded_file($yuklenendosya, $hedefyol); 
}
 
$resimler = implode(', ', $dosyaadi); 
$query = "INSERT INTO yenieklenenler (yenieklenenler_resim, yenieklenenler_ad, yenieklenenler_ilannumarasi) VALUES ('$resimler', '$emlakadi', '$ilannumarasi')"; 
if (mysqli_query($db, $query) === TRUE) {  
   echo '<div style="margin-top:25px; text-align:center; font-size:35px;">  Kayıt Başarıyla Gerçekleştirildi</div>';  
   header("refresh:3; url=yenieklenenler.php"); 
} else {  
   echo '<div style="margin-top:25px; text-align:center; font-size:35px;">  Kayıt Başarısız. <br> Geldiğiniz Sayfaya Yönlendiriliyorsunuz.</div>';  
   header("refresh:5; url=yenieklenenler.php"); 
}
busradmrts
31 gün önce

Bu işlemi gerçekleştirmek için, ilk olarak resimlerin yükleneceği klasörün var olup olmadığını kontrol etmeli ve gerekirse bu klasörü oluşturmalısınız.
Bu işlemi mkdir() fonksiyonu ile yapabilirsiniz.

if(isset($_FILES['dosya'])) {
    $ilanNumarasi = $_POST['ilannumarasi']; // İlan numarası değerini bir değişkene atalım.

    $klasorYolu = "../../images/yenieklenenler/";
    if (!file_exists($klasorYolu)) { // Eğer ilgili klasör yoksa,
        mkdir($klasorYolu, 0777, true); // Klasörü oluştur. 0777, klasörün izinlerini ayarlar ve true, gerektiğinde çoklu klasör yapısını oluşturur.
    }

    for($i = 0; $i < count($_FILES['dosya']['name']); $i++) {
        $dosyaAdi = basename($_FILES['dosya']['name'][$i]);
        $yuklenenDosya = $_FILES['dosya']['tmp_name'][$i];
        $hedefYol = $klasorYolu . "/" . $dosyaAdi; 
        
        if(move_uploaded_file($yuklenenDosya, $hedefYol)) { // Dosyayı hedef yola taşıyoruz.
            // Burada, başarılı bir şekilde yükleme yapıldıktan sonra veritabanı işlemlerini gerçekleştirebilirsiniz.
        } else {
            // Yükleme başarısız olduysa, hata mesajı gösterebilirsiniz.
        }
    }
}