yasarkemaldag adlı üyeden alıntı: mesajı görüntüle
@uykusuzz35;

emlak tablosundan ilgili kaydı sildikten sonra bir sorgu daha yazıp ilgili emlak id ye ait diğer resimleri galeri tablosundan çektirip döngü ile sildirmelisiniz. Tek sorguda trigger vb. yöntemlerle mysql kısmını halletseniz bile galerideki resimler ftpde kalmaya devam edecektir tam anlamıyla silme işlemi için 2. bir sorgu şarttır. Aşağıda basit bir örnek veriyorum, birebir kopyala ile çalışmayabilir ama mantığını anlamanız için kendinize göre uyarlayabilirsiniz.
Aşağıdaki örnekte diğer resimlerin "digerresimler" isimli tabloda tutulduğunu ve digerresimler isimli tabloda "emlak_id" sutününün olduğunu ve resim adlarının "resim" isimli sutünda tutulduğunu varsaydım.
Örnek:
if ($_GET['ilansil']=="ok") { $sil=$db->prepare("DELETE from emlak where emlak_id=:emlak_id"); $kontrol=$sil->execute(array( 'emlak_id' => $_GET['emlak_id'] )); if ($kontrol) { $resimsilunlink=$_GET['emlak_resim']; unlink("../../$resimsilunlink"); //diğer resimleri sorguyla çekip ftpden siliyoruz $diger_resimler_prepare = $db->prepare("Select resim From digerresimler where emlak_id=:emlak_id"); $diger_resimler_execute = $diger_resimler_prepare->execute(array('emlak_id' => $_GET['emlak_id'])); $diger_resimler_dizi = $diger_resimler_execute->fetchAll(); foreach ($diger_resimler_dizi as $key=>$value) { $foto = $value['resim']; unlink("../../$foto"); //ftpden sil } // //ilgili emlak_idye ait diğer resimleri veritabanındaki digerresimler isimli tablodan siliyoruz $sil=$db->prepare("DELETE from digerresimler where emlak_id=:emlak_id"); $kontrol=$sil->execute(array('emlak_id' => $_GET['emlak_id'])); // header("Location:../../ilanlarim.php?sil=ok"); } else { header("Location:../../ilanlarim.php?sil=no"); } }
İlginiz için çok teşekkür ederim. Mantığı anladım. Kendime göre düzenledim. Fakat sil butonuna bastığımda yine sadece emlak tablosuna göre mysql den ilanı ve sunucudan da vitrin görselini (emlak_resim) siliyor. Diğer resimler hem sunucuda hemde mysql de ilangaleri tablosunda duruyor. Bir de sil butonuna tıkladığımda boş sayfada şu linke yönlenip kalıyor. "islem.php?ilansil=ok&emlak_resim=images/ilan-detay/295296-deryap-01.jpg&emlak_id=59&emlakgaleri_id=59" yani islem.php den geri dönmüyor. Sizin verdiğiniz kod yapısına göre kendime uyarlamış olduğum hali şu şekilde;
if ($_GET['ilansil']=="ok") { 
  $sil=$db->prepare("DELETE from emlak where emlak_id=:emlak_id");
  $kontrol=$sil->execute(array(
    'emlak_id' => $_GET['emlak_id']
    ));
  if ($kontrol) {
    $resimsilunlink=$_GET['emlak_resim'];
    unlink("../../$resimsilunlink");
     
    //diğer resimleri sorguyla çekip ftpden siliyoruz
        $diger_resimler_prepare = $db->prepare("SELECT galeri_resimyol From ilangaleri where emlakgaleri_id=:emlakgaleri_id");
        $diger_resimler_execute = $diger_resimler_prepare->execute(array('emlakgaleri_id' => $_GET['emlakgaleri_id']));
         
        $diger_resimler_dizi = $diger_resimler_execute->fetchAll();
        foreach ($diger_resimler_dizi as $key=>$value)
        {
            $foto = $value['galeri_resimyol'];
             unlink("../../$foto"); //ftpden sil
        }
    //
     
    //ilgili emlak_idye ait diğer resimleri veritabanındaki digerresimler isimli tablodan siliyoruz
        $sil=$db->prepare("DELETE from ilangaleri where emlakgaleri_id=:emlakgaleri_id");
          $kontrol=$sil->execute(array('emlakgaleri_id' => $_GET['emlakgaleri_id']));
    //
     
    header("Location:../../ilanlarim.php?sil=ok");
  }
  else {
    header("Location:../../ilanlarim.php?sil=no");
  }
  
}
Diğer resimlerim "ilangaleri" isimli tabloda ve bu tabloda "emlak_id" değil de "emlakgaleri_id" sutünu var ve emlak_id ile aynı değeri alıyor zaten. resim adları da "galeri_resimyol" isimli sutünda bulunuyor. Sil butonundaki kodlarda mı bir hata yapıyorum acaba? Sil butonunun güncel kodu da şu şekilde;
<a href="admin/connect/islem.php?ilansil=ok&emlak_resim=<?php echo $emlakcek['emlak_resim']; ?>&emlak_id=<?php echo $emlakcek['emlak_id'];?>&emlakgaleri_id=<?php echo $emlakcek['emlak_id'];?>"
                            class="action-btn" data-toggle="tooltip" data-placement="top" title="Sil"><span style="text-align: center" class="label label-danger"><i class="fa fa-trash"></i> İlanı Sil</span></a>




yasarkemaldag adlı üyeden alıntı: mesajı görüntüle
@uykusuzz35;

emlak tablosundan ilgili kaydı sildikten sonra bir sorgu daha yazıp ilgili emlak id ye ait diğer resimleri galeri tablosundan çektirip döngü ile sildirmelisiniz. Tek sorguda trigger vb. yöntemlerle mysql kısmını halletseniz bile galerideki resimler ftpde kalmaya devam edecektir tam anlamıyla silme işlemi için 2. bir sorgu şarttır. Aşağıda basit bir örnek veriyorum, birebir kopyala ile çalışmayabilir ama mantığını anlamanız için kendinize göre uyarlayabilirsiniz.
Aşağıdaki örnekte diğer resimlerin "digerresimler" isimli tabloda tutulduğunu ve digerresimler isimli tabloda "emlak_id" sutününün olduğunu ve resim adlarının "resim" isimli sutünda tutulduğunu varsaydım.
Örnek:
if ($_GET['ilansil']=="ok") { $sil=$db->prepare("DELETE from emlak where emlak_id=:emlak_id"); $kontrol=$sil->execute(array( 'emlak_id' => $_GET['emlak_id'] )); if ($kontrol) { $resimsilunlink=$_GET['emlak_resim']; unlink("../../$resimsilunlink"); //diğer resimleri sorguyla çekip ftpden siliyoruz $diger_resimler_prepare = $db->prepare("Select resim From digerresimler where emlak_id=:emlak_id"); $diger_resimler_execute = $diger_resimler_prepare->execute(array('emlak_id' => $_GET['emlak_id'])); $diger_resimler_dizi = $diger_resimler_execute->fetchAll(); foreach ($diger_resimler_dizi as $key=>$value) { $foto = $value['resim']; unlink("../../$foto"); //ftpden sil } // //ilgili emlak_idye ait diğer resimleri veritabanındaki digerresimler isimli tablodan siliyoruz $sil=$db->prepare("DELETE from digerresimler where emlak_id=:emlak_id"); $kontrol=$sil->execute(array('emlak_id' => $_GET['emlak_id'])); // header("Location:../../ilanlarim.php?sil=ok"); } else { header("Location:../../ilanlarim.php?sil=no"); } }
Sorunu çözdüm hocam. Sizin yol göstermeniz sayesinde oldu. Çok teşekkür ederim. Kodlarda biraz değişiklik yaptım. Belki ihtiyacı olan olur diye paylaşıyorum. İlgi gösteren herekese teşekkürler.
if ($_GET['ilansil']=="ok") { 
  $sil=$db->prepare("DELETE from emlak where emlak_id=:emlak_id");
  $kontrol=$sil->execute(array(
    'emlak_id' => $_GET['emlak_id']
  ));
  if ($kontrol) {
    $resimsilunlink=$_GET['emlak_resim'];
    unlink("../../$resimsilunlink");
    //diğer resimleri sorguyla çekip ftpden siliyoruz
    $galerisor=$db->prepare("SELECT galeri_resimyol from  ilangaleri where emlak_id=:emlak_id");
    $galerisor->execute(array(
      'emlak_id' => $_GET['emlak_id']
    ));
   
    while ( $galericek=$galerisor->fetch(PDO::FETCH_ASSOC)) {
     
      $resimsilgaleri=$galericek['galeri_resimyol'];
        unlink("../../$resimsilgaleri");
           } 
    //
    //ilgili emlak_idye ait diğer resimleri veritabanındaki digerresimler isimli tablodan siliyoruz
           $sil=$db->prepare("DELETE from ilangaleri where emlak_id=:emlak_id");
           $kontrol=$sil->execute(array('emlak_id' => $_GET['emlak_id']));
    //
           header("Location:../../ilanlarim.php?sil=ok");
         }
         else {
          header("Location:../../ilanlarim.php?sil=no");
        }
      }