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.
bu sayacı asp olan sitemizde kullanabilirmiyiz. bir sorun olurmu.
@mehmet, aynı şeyi direk olarak asp sitesi ile beraber kullanmada sıkıntı olabilir. Ancak aynı mantıkla Asp'deki global.asa dosyasında aynı eventları oluşturabilir ve komutları çalıştırabilirsin.
- Veri tabanını 2003 e çevirdim(farklı kayıt et menüsünden)
- App_Data klasörü içine attım.
- Baglantı cümleciğini "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" şeklinde güncellemdim.
- En son olarakda Tarih Server inglizce olunduğundan DateTime.Now.ToString("yyyy-MM-dd") şeklinde güncelledim ve çalıştı :)
Sizde sakin kafayla yapın olacaktır... 2 ay önce bende yapamamıştım :D :D :D
Hocam sorunum bir page yapısı var sayfa yapısında sırası söyle önce user login olur, müşteri no arama yapar, sonra musteri varsa hesap seçer, sonra tarih aralığı seçer ve pdf e ekstreyi basar şimdi bu düzgün çalışıyor ama benden login yapmam söylendi bende sessionla yaptım, log da tutuyorum. sorunum şu, user girdikten sonra işlem yapıyor sonra pdf yazdırıyr. sonra tekrar başka işlem yapınca bundan önceki bilgiler geliyr. mesela seçtiğim hesap siyah oluyor seçtiğim tarih kalıyor neden olabilir.
@cem, bu sorun için sayfaların yapısını, kodlarını, session'da tutğunu verileri görmek lazım. Aksi halde tam olarak sorunun ne olduğuu anlamak zor. Verileri set ettiğin veya tuttuğun sessionlar var ise onlara dikkat etmek lazım.
abi ben bu sayacı yaptım. ms sql server 2005 database kullandım. local de çalışırken sorun yok. fakat siteye koyduğumda günlük ve aylık hep 1 olarak kalıyor. yıllık ve toplam da sorun yok. yardımcı olurmusun
@enes, tarih işlemlerinde sıkıntı olabilir. Bunun için sunucuda boş bir sayfada değerleri kontrol edebilir ve sorunu görebilirsin.
merhaba mehmet bey ziyaret sayacını oluşturdum ama aldığım hata şu:"cmd.ExecuteNonQuery();" gün tarihi veritabanındaki ile aynı ise çalışır ama farklı ise çalışmıyor,yani sistem tarihi değiştiği zaman gün olarak :"cmd.ExecuteNonQuery();" bu hatayı alıyorum...
her gün veritabanındaki tarihi elle düzeltmek zorunda kalıyorum... oda bütün verilerin aynı olmasına neden oluyor? bi türlü çözemedim yardımcı olursanız çok sevinirim... teşekkürler..
@ethem, paylaştığım kodlarda bunun kontrolü mevcut. Eğer gün değişmiş ise veritabanında tutulan tarih değerini de güncelliyorum. Acaba sen burayı atlıyor musun? O satırda hata veriyorsa sorguda da hata olabilir. Ancak sorunu tam olarak anlamak için debug yapabilirsin.
mehmet kardeşim teşekkürler çok başarılı bir anlatım olmuş. ama bir sorunum var sayaçı yaptım problemsiz çalışıyor ama bir yerde bir problem var sitede online olan sayısını 300-500-800 kafasına göre veriyor bunu gören site sahibi ise çok mutlu sitemi bukadar kişi ziyaret ediyor diye ama hata olduğunu bilmiyor şuan acaba ne gibi problem olmuş olabilir ?
@Serkan, söylemiş olduğun problemin nedeni Session_Start eventından kaynaklanıyor. Burada kullanıcı isteği geldiğinde session start çalışır. Ancak sonraki isteklerde bu eventın çalışmaması gerekir. (session patlamadığı sürece) Ancak çalıştığı için bu sıkıntı oluyor. Bunun için yapılacak yöntemlerden biri kullanıcının tarayıcısına bir cookie koyup onun kontrolünü yapmak olabilir. Bu çok daha net sayı verir. Ancak cookie ile oynanırsa sorunlar olabilir. Bir başka yöntem ise kullanıcıların bağlandıkları tarihi ve IP'lerini loglamak ve onlar üzerinden sorgulama yapmak olabilir. Ancak çok kullanıcı alan bir sistem ise sıkıntılar olabilir. Ama cookie en mantıklı çözüm yolu. Fırsat bulduğumda bloğumdaki sıkıntıyı da bu yolla çözeceğim.