
unlink lile birden çok dosya silme
8
●106
- 17-10-2021, 13:34:11Şu şekilde yaptım ama yine de başarılı olamadım.Softyr adlı üyeden alıntı: mesajı görüntüle

urun_id lere bağlı olan fotoları silersem benim için tek tek isimlerini yakalamaktan daha kolay olcağını sanıyorum.

urunu sildiğim zaman urun tablomdan silmiş oluyorum ama 1. görselin altında if kontrolden sonra urun fotodaki urun id ye bağlı olan tüm görselleri de silmiş oluyorum nuraya kadar sorun yok fakat urun fotolarımı kaydettiğim dosyamda görsellerin hepsi duruyor olarak buluyorum. - 17-10-2021, 13:36:06unlink yaptığınız kısımda sadece $_GET'ten gelen değeri kullanıyorsunuz, $resimunlink kısmını veritabanınızdaki urunfoto_resimyol kısmına bağlarsanız istediğiniz şekilde olacaktır.meetadfor adlı üyeden alıntı: mesajı görüntüle
- 17-10-2021, 19:26:59Resimleri diskten silebilmeniz için resimlere ait yolları biliyor olmanız lazım. "DELETE FROM urun_foto..." sorgusunu çalıştırmadan önce ürüne ait resim yollarını alıp resimleri diskten silin. Şu şekilde deneyebilirsiniz, muhtemelen çalışacaktır;
$resimler = $db->prepare("SELECT urunfoto_resimyol FROM urunfoto WHERE urun_id = :urun_id"); $resimler->bindValue(':urun_id', $_GET['urun_id'], PDO::PARAM_INT); if($resimler->execute()){ while ($resimYolu = $resimler->fetchColumn()) { unlink($resimYolu); } } - 18-10-2021, 12:22:27Merhaba, şu şekilde dediğini yapmaya çalıştım ama maalesef çalışmadıghergedan adlı üyeden alıntı: mesajı görüntüle
if ($_GET['urunsil']=="ok") { kontrolet (); $sil=$db->prepare("DELETE from urun where urun_id=:urun_id"); $kontrol=$sil->execute(array( 'urun_id' => $_GET['urun_id'] )); if ($kontrol) { $resimler = $db->prepare("SELECT urunfoto_resimyol FROM urunfoto WHERE urun_id = :urun_id"); $resimler->bindValue(':urun_id', $_GET['urun_id'], PDO::PARAM_INT); if($resimler->execute()){ while ($resimYolu = $resimler->fetchColumn()) { unlink($resimYolu); } } $resimlerisil=$db->prepare("DELETE from urunfoto where urun_id=:urun_id"); $bak=$resimlerisil->execute(array( 'urun_id' => $_GET['urun_id'] )); Header("Location:../production/urun.php?durum=ok"); } else { Header("Location:../production/urun.php?durum=no"); } } - 18-10-2021, 17:10:04hata çıktısı yok mu? ayrıca resimler hangi dizinde, unlink fonksiyonuna giden parametreyi düzenlediniz mi? şunu deneyin;
unlink(getcwd().'/'.$resimYolu);
meetadfor adlı üyeden alıntı: mesajı görüntüle - 18-10-2021, 17:26:09meetadfor adlı üyeden alıntı: mesajı görüntüle
foreach ($bak as $resimsilunlink) { unlink("../../".$resimsilunlink); }bu sekilde yaparsan calisacaktir. - 18-10-2021, 20:53:23Cevaplarınız için teşekkür ederim beyler sorunu şu şekilde çözdüm:
if ($_GET['urunsil']=="ok") { kontrolet (); $sil=$db->prepare("DELETE from urun where urun_id=:urun_id"); $kontrol=$sil->execute(array( 'urun_id' => $_GET['urun_id'] )); if ($kontrol) { $urunfotosor=$db->prepare("select * from urunfoto where urun_id=:urun_id"); $urunfotosor->execute(array( 'urun_id' => $_GET['urun_id'] )); while($urunfotocek=$urunfotosor->fetch(PDO::FETCH_ASSOC)) { $resimsilunlink=$urunfotocek['urunfoto_resimyol']; unlink("../../$resimsilunlink"); } $resimlerisil=$db->prepare("DELETE from urunfoto where urun_id=:urun_id"); $bak=$resimlerisil->execute(array( 'urun_id' => $_GET['urun_id'] )); Header("Location:../production/urun.php?durum=ok"); } else { Header("Location:../production/urun.php?durum=no"); } }

