hocam senin sitende ki gibi makalelerin okuma sayısını tutmam gerekiyor.Sitende ki makalelere baktım ama anlayamadım yardımcı olursan sevinirim.Sen siten de nasıl bi uygulama geliştirdin.İyi çalışmalar.
Merhaba. Bunun için sitemde makaleleri gösterdiğim sayfada gösterilen her makale için bir Session oluşturuyorum ve bu Session`u kontrol ediyorum. Eğer kullanıcı siteme girdiğinde Session boş ise hem Session'u dolduruyorum hem okunma sayısını artırıyorum. Session süresi dolana dek kullanıcı gelen kadar okunma sayısı artmıyor. Bu şekilde bir kontrol var.
Burada sorduğun konuyla ilgili yazımı ve örneği bulabilirsin.
hocam yardım için teşekkürler.senin sayende pek çok şey öğrendim.Teşekkürü bir borç bilirim.Şu MVC konusunu senin sitenden de takip ediyorum ama yapı kafam da bir türlü oluşmadı bunla ilgili daha detaylı makale yayınlarsan sevinirim yada önereceğin bir kaynak var mı? Çalışmalarında başarılar.
MVC konusunda neler yazacağımı belirledim ama zamanım olmadığı için oturup yazamıyorum. Fırsat buldukça hepsini paylaşacağım. Ancak yazılarımın çoğu yine uygulama ağırlıklı olacak. MVC için internet sitelerini ve blogları takip ediyorum. Elimde bir kaynak yok. MVC ile örnek yapmayı dene. Bu şekilde yapıyı anlayabilirsin.
zsk
16 Temmuz Perşembe 2009 00:54
#5
Ziyaretci tum cookie bilgilerini silip tekrar siteye giris yaparsa ziyaretci sayisi fazladan 1 kisi olmaz mi?
Merhaba. Sorduğunuz güzel bir soru ancak burada cookie kontrolü yok. Kullandığımız event Session_Start eventı. Kullanıcı tarayıcısıyla bir session başlattığında bu kodlar çalışır ve kullanıcı tarayıcısı ile sayfayı kapatmadıkça ve Session.Timeout süresini aşmadıkça kodlar bir daha çalışmaz. Ancak bu bile yeterli olmayabilir. Bunun için IP kontrolü, Cookie kontrolü veya başka bir kontrol yapılabilir. Burada önemli olan sayaç yapımı. Dediğin kontrol olayı geliştirene kalmış. İstediği bir yöntem ile kontorülünü yapar.
hocam session_start event çalışmadan online sayısı 1 olarak gözüküyor ben sitenin admin panelinden takip etmek istedim istatistikleri fakat admin panelini açtığım zaman online session oturum açmadan 1 olarak gözüküyor neden olabilir ????
Oturum açmadan kastın login olmak ise online kullanıcı sayısını login olduktan sonra artırmalısın. Global.asax dosyasında session_start eventı ile login olma durumunun ilgisi yok. Session_start eventı tarayıcı siteyi açtığında çalışır. Eğer kullanıcı login olup bu sayıyı kontrol edeceksen login olma sırasında çalışan bir kod yazmalısın.
tmm hocam konu anlaşılmıştır tşk ederim
Baha
29 Ağustos Cumartesi 2009 23:44
#10
Ya üstad olağanüstüsün allah razı olsun çok faydalı bilgiler veriyorsun
hocam merhaba,
datalistte yayınladıım verilerin altına 2 adet linkbutton koyuyorum yine datalistin içinde, beğen beğenme butonları istiyorumki beğene tıklayınca veritabanında beğenildi true yapsın ve enabledları false olsun. bunun için ItemCommand da CommandName lerinden e leri yakaladım fakat enabled yapamıyorum yol gösterir misiniz, teşekkürler...
Merhaba. Öyle bir uygulamada enabled değerini veritabanından aldığına göre veritabanında yaptığın değişim sonucu datalist'e aktaradığın verileri yenilemelisin. Yani datalisti tekrar data ile yüklemelisin.
begene tıklarsa veritabanındaki begenildiMi 1 oluyor begenmedimee tıklarsa begenilmediMi kolonu. Bu durumda user giriş yaptığında id sini sessiona atıyorum istiyorumki, eğer o sessiondaki üye o makale id'm için butonlardan birine bastıysa ikiside false olsun. Kendi bloğumu kodlamaya çalışıyorum da hocam anasayfaya özetleri datalistle çektim içinde commandName'lerle bunu yapmaya çalışıyorum. Eğer bu yol sağlıklı değilse bir başka yol öneriniz var mı? Teşekkürler.
Öyle birşeyi herhangi bir event ile uğraşmadan Ajax ile çok rahat yapmak mümkün. Ayrıca efekt ve görsellik ile de zenginlik katılabilir. Eğer yapabilirsen bu şekilde yap. Sitemde Ajax ile oylama uygulaması buna benzer bir uygulama. Eğer uyarlayabilirsen o şekilde kullanım senin için daha iyi olur. (
Buradan ve
buradan faydalanabilirsin.)
Mehmet kardeşim bu makalen çok faydalı oldu ama bi yeri tam anlayamadım... session_timeout ' a 5 dk verip session_start eventının tekrar çalışmasını engellemiş olmanın mantığı nedir? yani 5 dakikada bir mi bu sayaç tablosu kendini güncellemiş mi oluyo? burayı tam kavrayamadım...
Merhaba. Burada Session için bir süre vermenin amacı ziyaretçi siteye girdiğinde session başlar ve sayaç işler. Eğer 5 dakika vermiş isek bu sürede ziyaretçinin her işleminde sayaç tekrar işlemeyecektir. Daha kısa verirsek sayaç bir ziyaretçi için birden fazla çalışabilir. Gerçekçi bir sayaç değeri için böyle bir seçim yaptım.
Merhaba Mehmet bey, güzel bir uygulama, PC'mde sorunsuz sayaç çalışıyor, ancak Server'e attığımda cmd.ExecuteNonQuery(); hatası veriyor ve güncelenebilir olmalı diyor. Bu sorunu çözemedim. Sen ilgilenirsen sevinirim.
Veritabanı olarak Access kullanıyorsan server tarafında bu veritabanına yazma izni vermelisin. Aksi halde tüm veri girme işlemlerinde aynı hatayla karşılaşırsın.
herkeste nasil calisyor bu kodlar anlamiyorum 2 gundur ugrasiyom almadigim hata kalmadi en son alinan hata ise bu :
{"There is no row at position 0."}
{Cannot evaluate expression because the code of the current method is optimized.}
if (((DateTime)tablo.Rows[0]["tarih"]).Day == DateTime.Now.Day)
Sitemde paylaştığım kodların hepsini çalışan örnek üzerinden paylaşırım. Bu da bu örneklerden biri. Aldığın hataya bakacak olursak da kullandığın sorgu sonucu ya sonuç dönmüyor ya da girdiğin sütun değeri yok. Uygulamaya geçmeden önce mümkünse veritabanı sorgularını deneyip, sorgu sonuçlarını görmen daha iyi olur.
Operation must use an updateable query
Exception Details: System.Data.OleDb.OleDbException: Operation must use an updateable query.
Line 56: OleDbCommand cmd = new OleDbCommand(komut, bg);
Line 57: bg.Open();
Line 58: cmd.ExecuteNonQuery();
Line 59: bg.Close();
Line 60:
en son geldigim nokta burasi
Bu hatayı almamak için kullandığın veritabanına yazma izni vermelisin. Yazma izni olmadığı için bu hatayı alıyorsun.
yazma izni vermeyi cok denedim internnete arattim ve denilen her turlu yazma iznini vermeye calistim ama olmadi ayni hatayi almaya devam ediyorum
windows 7 kullaniyorum burdan nasil yazma izini verebilecegim hakkinda bilgi verirmisin ?
Eğer IIS üzerinden yapacaksan dosya görünümüne geçip izin verilecek dosyayı seçip izinleri düzenleme bölümünden kullanıcılar için izinleri düzenleyebilirsin. Direk windows üzerinde yönetici isen dosyaya sağa tıklayıp, izinler bölümünden de ayarlayabilirsin. İki işlem de aynı.
mehmet bey, bu uygulamanın vb için olanı yok mu?
Maalesef yok ama kodların satır satır okunarak vb'ye çevrilebileceğini düşünüyorum.
Mehmet bey tşk ederim bilgilerinizi paylaştığınız için. Güzel bir makale olmuş fakat yanılıyorsam bağışlayın ama sizcede bu sayac hatalı çalışmaz mı? çünkü session_timeout belirtmezseniz kullanıcı siteyi gezerken sayac artacaktır sessiona 5 dk verirseniz 5 dk içinde 10 kişide girse online hep 1 kalacaktır benim uygulamamda bu şekilde bir sıkıntı oluyor benmi yanlış yaptım acaba ilgilenirseniz sevinirim. kolaylıklar diliyorum
Yazdığım kodlarda Session_Start eventının son satırlarında söylemiş olduğun timeout değerini belirttim. Ayrıca Session_End eventı ile de online sayısı birer birer azaltılıyor. Kodları incelemeden yazdın sanırım.
Hayır inceledim hatta uyguladım ve belirttiğim problem ortaya çıktı. 5 dk boyunca kaç kişi girerse girsin online kullanıcı sayısı değişmiyor 1 olarak kalıyor çünkü oturum sonlanmıyor ancak 5 dk sonra artıyor.
Kodda timeout'a 5 dk süre verdim ben. Eğer sen de bu şekilde verdiysen söylediğin normal. Süreyi uzatarak gereksiz artışı engeleyebilirsin. Ancak illa seesion ile yapmaya gerek yok. Cookie ile de kullanıcının daha önce girip girmediğini tutabilirsin.
İlginiz için teşekkür ederim kolaylıklar diliyorum.
Bu kodu sitemde kullandım ama gün değişince cmd.executenonquery satında hata veriyor.Örneğin veritabanında tarih 10/06/2010 ama sistem tarihi 11/06/2010 ise kod çalışmıyor.tarihi gidpp veritabınından elle 11/06/2010 yapınca kod hatasız çalışıyor bu hatayı nasıl düzeltebilirim.
Merhaba. Eğer böyle hata alıyorsan tarih formatı ile ilgili bir sıkıntı olabilir. Break point ile veritabanına sorgu gönderilmeden önce sorgunun ne olduğuna bakıp değerlerin doğru olup olmadığını kontrol edersen sorunun ne olduğunu bulabilirsin. Büyük ihtimalle tarih formatı ile ilgili bir sıkıntıdır diye düşünüyorum.