none
Döngü ile fotoğraf silme RRS feed

  • Soru

  • merhaba, süresi dolunca silinen bir verim var ve bu verinin fotoğrafını da silmek istiyorum.
    şöyle bir yol denedim;

     DataRow resimsayisi = vt.GetDataRow("select count(foto) as sayi from seriilan where datediff('d', eklemetarih, Date()) > sure+7"); //süresi dolan ilanların sayısı

         DataRow resimismi = vt.GetDataRow("select foto from seriilan where datediff('d', eklemetarih, Date()) > sure+7 order by ilan_id desc"); //süresi dolan ilanın resim ismini getir
               



     for (int i = 0; i < int.Parse(resimsayisi["sayi"].ToString()); i++ ) // süresi dolan verilerin sayısı kadar döngüyü tekrarla
                {


                      

    if (File.Exists(Server.MapPath("../Upload/serifoto/" + resimismi["foto"]))) //böyle bir resim var mı
                    {

                            File.Delete(Server.MapPath("../Upload/serifoto/" + resimismi["foto"])); //bu fotoğrafı sil

    }

    }

    datatable komutu ile resim isimlerini diziye atıp dizideki isimleri sildirmeyi denedim ama datatable'daki verileri diziye atamadım.
    onun yerine, zaten her zaman en son veri gelecek en son veri geldikçe sil dedim. yani döngü silinecek veri sayısı kadar döndüğünde süresi biten bütün ilanlar silinecekti. ama işler öyle gitmedi. işin içinden de çıkamayınca size danışayım dedim. 

    sorun şu; resim ismini for döngüsünün dışında çekiyorum. mesela 3 tane ilanın süresi doldu ve bunların fotoğrafı silinecek. resim sayısını alıyor for döngüsüne giriyor siliyor. tekrar döndüğünde resmi bulamadı diyor for'dan çıkıyor.
    bende resim ismini for döngüsün içinde çekmeye çalışıyorum. yani for döngüsü her başa sardığında son veriyi çek demek istiyorum ama bu seferde Nesne başvurusu bir nesnenin örneğine ayarlanmadı. hatası veriyor.





    • Değiştirilmiş Tür KaanOZTRK 5 Ocak 2015 Pazartesi 14:04
    • Değiştirilmiş Tür KaanOZTRK 5 Ocak 2015 Pazartesi 14:05
    • Düzenleyen KaanOZTRK 5 Ocak 2015 Pazartesi 14:14
    5 Ocak 2015 Pazartesi 14:00

Yanıtlar

  • DataRow resimsayisi = vt.GetDataRow("select count(foto) as sayi from seriilan where datediff('d', eklemetarih, Date()) > sure+7"); //süresi dolan ilanların sayısı

    DataRow resimismi = vt.GetDataRow("select foto from seriilan where datediff('d', eklemetarih, Date()) > sure+7 order by ilan_id desc"); //süresi dolan ilanın resim ismini getir

    Yukarıda ki kodların gerizeye dizin döndürmüyor. vt.GetDataRow geriye dizin döndürse DataRow[] şeklinde yakalaman gerekir. Aşağıda ki örneğe göre kodlarını düzenleyeblirsin.

    using (SqlConnection connection = new SqlConnection("conString"))
                {
                    DataTable dataTable = new DataTable();
                    SqlCommand command = new SqlCommand("select foto  from seriilan where datediff('d', eklemetarih, Date()) > sure+7",connection);
                    SqlDataAdapter sqlAdapter = new SqlDataAdapter();
                    sqlAdapter.Fill(dataTable);
                    foreach (DataRow item in dataTable.Rows)
                    {
                        if (File.Exists(Server.MapPath("../Upload/serifoto/" + item["foto"]))) //böyle bir resim var mı
                        {
                             File.Delete(Server.MapPath("../Upload/serifoto/" + item["foto"])); //bu fotoğrafı sil
                       }
    
                    }
                }   


    • Yanıt Olarak İşaretleyen KaanOZTRK 5 Ocak 2015 Pazartesi 20:52
    5 Ocak 2015 Pazartesi 16:03

Tüm Yanıtlar

  • DataRow resimsayisi = vt.GetDataRow("select count(foto) as sayi from seriilan where datediff('d', eklemetarih, Date()) > sure+7"); //süresi dolan ilanların sayısı

    DataRow resimismi = vt.GetDataRow("select foto from seriilan where datediff('d', eklemetarih, Date()) > sure+7 order by ilan_id desc"); //süresi dolan ilanın resim ismini getir

    Yukarıda ki kodların gerizeye dizin döndürmüyor. vt.GetDataRow geriye dizin döndürse DataRow[] şeklinde yakalaman gerekir. Aşağıda ki örneğe göre kodlarını düzenleyeblirsin.

    using (SqlConnection connection = new SqlConnection("conString"))
                {
                    DataTable dataTable = new DataTable();
                    SqlCommand command = new SqlCommand("select foto  from seriilan where datediff('d', eklemetarih, Date()) > sure+7",connection);
                    SqlDataAdapter sqlAdapter = new SqlDataAdapter();
                    sqlAdapter.Fill(dataTable);
                    foreach (DataRow item in dataTable.Rows)
                    {
                        if (File.Exists(Server.MapPath("../Upload/serifoto/" + item["foto"]))) //böyle bir resim var mı
                        {
                             File.Delete(Server.MapPath("../Upload/serifoto/" + item["foto"])); //bu fotoğrafı sil
                       }
    
                    }
                }   


    • Yanıt Olarak İşaretleyen KaanOZTRK 5 Ocak 2015 Pazartesi 20:52
    5 Ocak 2015 Pazartesi 16:03
  • Cengiz bey, siz var ya çok büyük adamsınız ya. tüm samimiyetimle söylüyorum bunu.
    6 Ocak 2015 Salı 01:33