• 17-10-2021, 01:02:06
    #1
    Urun tablomdan bi ürün siliyorum ve bu ürünü sildiğim zaman urun foto tablomdan bu ürün id ye ait tüm urun foto idleri de siliyorum fakat bu ürün id ye ait olan tüm resimleri klasörden silemiyorum ne yapmalıyım?
  • 17-10-2021, 03:04:24
    #2
    Merhaba,

    Silmeniz gereken dosya ID'lerini foreach ile döndürmeden silmeye çalışırsanız sadece tablodan gelen ilk ID'yi silecektir.
    Foreach kullanarak X tablosunda bulunan tüm resimleri silebilirsiniz.

    İyi çalışmalar
  • 17-10-2021, 13:34:11
    #3
    Softyr adlı üyeden alıntı: mesajı görüntüle
    Merhaba,

    Silmeniz gereken dosya ID'lerini foreach ile döndürmeden silmeye çalışırsanız sadece tablodan gelen ilk ID'yi silecektir.
    Foreach kullanarak X tablosunda bulunan tüm resimleri silebilirsiniz.

    İyi çalışmalar
    Şu şekilde yaptım ama yine de başarılı olamadım.


    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:06
    #4
    meetadfor adlı üyeden alıntı: mesajı görüntüle
    Şu şekilde yaptım ama yine de başarılı olamadım.


    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.
    unlink 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.
  • 17-10-2021, 19:26:59
    #5
    Resimleri 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:27
    #6
    ghergedan adlı üyeden alıntı: mesajı görüntüle
    Resimleri 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);
        }
    }
    Merhaba, şu şekilde dediğini yapmaya çalıştım ama maalesef çalışmadı

    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:04
    #7
    hata çı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
    Merhaba, şu şekilde dediğini yapmaya çalıştım ama maalesef çalışmadı

    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:26:09
    #8
    meetadfor adlı üyeden alıntı: mesajı görüntüle
    Şu şekilde yaptım ama yine de başarılı olamadım.


    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.
    foreach ($bak as $resimsilunlink) { 
    unlink("../../".$resimsilunlink); 
    }
    bu sekilde yaparsan calisacaktir.
  • 18-10-2021, 20:53:23
    #9
    Cevapları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");
            }
    
        }