Php upload işleminde klasörün içine resim yolu verme sorunu
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);
}
}
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (2)
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");
}
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.
}
}
}