mehmetduran.com - Paylaşmak Güzeldir...
Asp.net ile Arşiv Bölümü Hazırlama - Örnek Uygulama
Bu yazımda hazırladığımız projelerde kullanabileceğimiz arşiv bölümünü nasıl yapabileceğimizi anlatmaya çalışacağım. Öncelikle anlatacağım arşivleme uygulaması kendi sitemde kullandığım arşiv bölümüne benzemektedir. Aylara göre eklediğim verilerin sayısını gösteriyorum ve bunlardan birini seçtiğimizde seçtiğimiz tarihe ait verileri görebiliyoruz. Bu yazımı da tamamen bu örnek üzerine hazırladım. Öncelikle hazırlamış olduğum uygulamayı buradan görebilirsiniz. Şimdi ise bu uygulamanın mantığına ve nasıl yaptığıma bakalım.

Öncelikle bu uygulamayı yapmak için bir class oluşturdum ve tüm işlemleri bu class içerisinde yaptım. Öncelikle arşiv oluşturmak için başlangıç tarihi ve bitiş tarihi olmalıdır. Bu değerleri ister veritabanından alabilir ister kendimiz belirleyebiliriz. Yaptığım örnekte bu değerleri kendim belirledim. Bu değerlere ve arasındaki tarih farkına göre ayları listeleyip her ay için verilerin sayısını bulmalıyız. Bunu da yazdığımız bir method ile halledebiliriz. Aşağıda arşiv oluşturmak için hazırladığım class'ı görebilirsiniz.

public class arsiv_olustur
{
 
  public string[] aylar ={ "Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık" };
  public DateTime baslangic_zaman, son_zaman;
 
  OleDbConnection bg;
 
  public arsiv_olustur()
  {
    baslangic_zaman = new DateTime(2008, 1, 1);
    son_zaman = new DateTime(2008, 12, 1);
 
    bg = new OleDbConnection("provider=microsoft.jet.oledb.4.0; data source=" + HttpContext.Current.Server.MapPath("~/arsiv.mdb"));
  }
 
  public int kayit_sayisi(int yil, int ay)
  {
    int sonuc = 0;
    OleDbCommand komut = new OleDbCommand("select count(*) from arsiv where year(tarih)=@yil and month(tarih)=@ay", bg);
    komut.Parameters.AddWithValue("@yil", yil);
    komut.Parameters.AddWithValue("@ay", ay);
    bg.Open();
    sonuc = (int)komut.ExecuteScalar();
    bg.Close();
    return sonuc;
  }
 
  public string arsiv_getir()
  {
    string sonuc = "";
 
    for (int i = son_zaman.Month; i >= baslangic_zaman.Month; i--)
    {
      sonuc += "<a href='arsivim.aspx?tarih=" + son_zaman.Year + "/" + i + "'>" + aylar[i - 1] + " " + son_zaman.Year + " (" + kayit_sayisi(son_zaman.Year, i) + ")" + "</a>";
    }
 
    return sonuc;
  }
 
}

Görüldüğü gibi hazırladığım class bu şekilde. Ancak şunu belirtmeliyim ki gerçek uygulamalr için bu kodu biraz daha geliştirmeliyiz. Ben tarih değerlerini kendim belirledim. Halbuki bu değerler sürekli değişen değerler. Onun için yapacağımız uygulamalarda son zaman değerini şimdiki zaman olarak almalı ve işlemlerimizi bu değerlere göre yapmalıyız. Bu şekilde yaptığımızda kodlarımızın uzayacağını görebiliriz. Çünkü hazırlayacağımız döngülerin ne kadar döneceği belli değil. Bu yüzden bazı değerleri kontrol etmeliyiz. Bunu da bu konu ile ilgileneceklere bırakalım. :)

Yaptığım uygulamada önemli bir nokta da veritabanında tarihe göre sorgulama yaparken sql fonskiyonlarından month() ve year() fonksiyonlarını kullanıyoruz. Bu fonksiyonlar ile veritabanında tarih olarak tutulan verilerden ay ya da yıl bilgisini elde edebiliyoruz. Yani; istediğimiz iki tarih arasında sorgulama yaparken bu fonksiyonları kullanıyoruz.

Yaptığım uygulamayı buradan görebilirsiniz.
Buradan da örnek projeyi indirebilirsiniz.

Not : Bu yazıyı bir arkadaşımızın isteği üzerine hazırladım. Umarım ona ve ilgilenenlere faydası olur.

İyi Çalışmalar!
Bookmark and Share
Bu Yazıyı Değerlendirin.
Konuyla İlgili Olabilecek Diğer Yazılar The Ultimate Css (E-Book) jQuery ile Modal Hazırlama (Eklenti ile) Jquery ile Kayan (Floating) Alan Yapımı Asp.net ile Veritabanından Rasgele Kayıt Çekme Hazırladığım Staj Raporu
Yorumlar
Yorum Yaz
RSS Yorum Takibi
ihsan bulut 08 Ocak Perşembe 2009 17:00 #1
Evet döngüyü baska bir dongu icine alıp yılları kontrol etmemiz gerekiyor sanırım
Mehmet Duran 08 Ocak Perşembe 2009 17:04 #2
Başka bir döngü değilde birkaç döngüyü birleştirmek gerekiyor. Kontrol etmemiz gereken de dediğin gibi yıl farkı olmalı.
ihsan bulut. 08 Ocak Perşembe 2009 18:19 #3
evet kastetigimde bu. ama söyle bir problem cıkıyor. eger son zamanı simdiki zaman olarak alırsam problem cıkıyor. ama DateTime(2050,12,1) sekl`nde kullandigimda problem yok gayet normal.
Mehmet Duran 08 Ocak Perşembe 2009 19:13 #4
Şimdiki zaman derken metottaki ay ve yıl bilgilerini şimdiki zamanın ay ve yıl bilgileri olarak vermek daha doğru.
ali tezel 22 Eylül Çarşamba 2010 19:46 #5
burada örneğin agustos 2010 (11) 'e tıkladığımız zaman yönleneceğimiz sayfaya request.querystring() metodu ile mi erişim sağlıyoruz?
Mehmet Duran 23 Eylül Perşembe 2010 11:23 #6
@ali tezel, linke tıklandığında gidilecek yer zaten bellidir. Bu değeri linkleri oluştururken belirtiyoruz. Linke tıklanıp adrese gidildiğinde ise tarih verileri url'den request.querystring ile alınmakta.
niyazi karamanoğlu 21 Ekim Perşembe 2010 18:46 #7
peki bizi tüm sonuçları bu şekilde değilde veritabanından çekiyor olsak nasıl yapacaktık. mesela ben bu örnekdeki olayı veritabanından çekip sayfada gösteriyorum. ay yıl ve makale sayısı olarak ekim 2005 (6) gibisinden. bu linke tıklandığında ilgili sayfada 2005 ekim ayına ait olan 6 tane makaleyi listeletmek istiyorum. bunu nasıl yapabilirim.
Mehmet Duran 22 Ekim Cuma 2010 09:01 #8
@niyazi, söylemiş olduğun şey ile benim yapmak ve anlatmak istediğim şey aynı. Zaten örnekte de veriler veritabanından çekiliyor. Link oluşturulduğunda ise linkin adresine ay ve gün bilgisi querystring olarka ekleniyor ve gidilecek sayfada ay ve gün bilgisine querystring ile erişebiliyorsun. Bu bilgiler ile ay ve güne göre sorgulama yapıp ilgili kayıtları listeletiyorsun.
İsim :
Site :
Yorum :

Buradan bu yazıya ait yorumları RSS olarak takip edebilirsiniz.

Bu servis ile yazılara eklenen yorumları RSS ile takip ederek konu ile ilgili başkaları tarafından yapılan yorumları veya konuyla ilgili sorduğunuz sorulara verilen cevapları görebilirsiniz.
Hata yapmayan bir insan genellikle hiçbirşey yapmıyordur.
Bölümler
Yazılar
Arşiv
Arama
Linkler
Site İçi Arama
Son Zamanlarda Ne Yapıyorum ?
İstatistikler - Araçlar - Reklam
İstatistikler
Sayaç
Mehmet Duran | mehmetduran.com | Copyright © 2009