PDA

View Full Version : سوال: یک روش مناسب برای ثبت تعداد بازدید کنندگان در بانک



khz-web1
شنبه 22 تیر 1387, 04:40 صبح
سلام

من تعداد بازدید کنندگان سایت خودم رو می خواهم در بانک ثبت کنم ....

برای مثال اگه از آپدیت استفاده کنم خوب اگه مقدار بازدید من صفر بشه مقدار بانک هم صفر میشه پس بنابر این فایده ای نداره.....

اگر از Insert into استفاده کنم ، برای هر بازدید یه رکورد درج میکنه که کار مناسبی نیست ....

می خواستم بدونم شما دوستان چه روشی رو برای ثبت مقدار بازدید کنندگان در بانک را می دهید .....

با تشکر

salehbagheri
شنبه 22 تیر 1387, 08:31 صبح
من كه براي ثبت تعداد بازديد كنندگان، از Global.asax استفاده مي كنم.


برای مثال اگه از آپدیت استفاده کنم خوب اگه مقدار بازدید من صفر بشه مقدار بانک هم صفر میشه پس بنابر این فایده ای نداره

به نظر من كه اين يه اشكال محاسباتيه!
حتما شما مقدار جديد رو اپديت مي كنيد! اينطور نيست؟
شما بايد مقدار جديد رو با مقدار قبلي جمع كنيد و سپس آپديت كنيد، در اين صورت هيچ وقت مقدار صفر نخواهيد داشت هرچند اگر در يك روز هيچ بازديد كننده اي نداشته باشيد.

khz-web1
شنبه 22 تیر 1387, 13:13 عصر
شما بايد مقدار جديد رو با مقدار قبلي جمع كنيد و سپس آپديت كنيد، در اين صورت هيچ وقت مقدار صفر نخواهيد داشت هرچند اگر در يك روز هيچ بازديد كننده اي نداشته باشيد.

میشه یکم راجب این موضوع بیشتر توضیح بدید

من در فایل global.asax کد زیر رو قرار می دهم


Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs on application startup


Application("counter") = 0



End Sub

Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs on application shutdown

End Sub

Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs when an unhandled error occurs
End Sub
Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs when a new session is started



Session("Start") = Now
Application.Lock()
Application("counter") = CInt(Application("counter")) + 1
Application.UnLock()


End Sub
Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs when a session ends.
' Note: The Session_End event is raised only when the sessionstate mode
' is set to InProc in the Web.config file. If session mode is set to StateServer
' or SQLServer, the event is not raised.
End Sub

</script>


حالا به نظر شما من مقدار بدست اومده در صفحه(default.aspx ) رو چطوری با مقدار قبلی که در بانکه جمع کنم .... (منظور شما این بود ؟)
با تشکر

salehbagheri
شنبه 22 تیر 1387, 15:35 عصر
به نظر من كه كدتون از پايه مشكل داره! تصحيحش كنيد.
يك كد به زودي برات مي زارم. فعلا ويژوالم مشكل پيدا كرده!

Bahram0110
یک شنبه 23 تیر 1387, 00:17 صبح
سلام
نه asp.net بلدم نه sql server

راه حلش اینه که شما توی اولین بازدید (یا بصورت دستی) اولین مقدار رو توی جدول بریزید (insert) و در بازدید های بعدی اون رو آپدیت کنید

khz-web1
یک شنبه 23 تیر 1387, 00:20 صبح
ببین بهرام جان اگه من vs.net رو ببندم خوب برنامه هم application رو صفر می کنه و وقتی applicaton صفر بشه خوب مقدار بانک هم صفر میشه ....

می خوام یه راه حل درست حسابی بهم بدید

با تشکر

chaalesh
یک شنبه 23 تیر 1387, 01:02 صبح
شما وقتی برنامه رو میبندی applicaton بسته میشه و کانترهات صفر میشه ولی اطلاعات درون دیتا بیس که صفر نمیشن

khz-web1
یک شنبه 23 تیر 1387, 01:04 صبح
شما وقتی برنامه رو میبندی applicaton بسته میشه و کانترهات صفر میشه ولی اطلاعات درون دیتا بیس که صفر نمیشن


ولی با اجرای دوباره برنامه، دیتا بیس من آپدیت میشه .... و مقدار 1 رو میگیره

rezaei manesh
یک شنبه 23 تیر 1387, 11:04 صبح
عزیز چرا دوستان هر چی میگن شما باز حرف خودت رو می زنی
ببین روش های زیادی برای این کار هست روش سادش همونی که نوشتی هر موقع یک سیشن جدید ایجاد می شه شما برو تو بانک ببین اگه تو اون تاریخ رکورد داشتی مقدار شمارنده رکورد رو با 1 جمع کن و در اون قرار بده و اگه نداشتی یک رکورد در اون تاریخ با شمارنده 1 ایجاد کن
حالا دیگه نگو صفر میشه صفر نمی شه شما می خواد جمع کل بدی sum بگیر بدون تاریخ
اگر تاریخ خاصی هم می خوای که دیگه مشخه و...
اما یه راه حل دیگه که بهتر هم هست اینه که شما یک پروسیجر بنویسی و هر صفحه که باز می شه شما اونو فراخوانی کنی و ببینی اگر رکوردی با اون ای پی هست که هیچ و لی اگر نیست یکی ایجاد کنی
حالا قبل این کار شما باید مثلا همه رکورد های کوچکتر از 10 دقیق پیش رو حذف کنی
در ضمن این جدول فقط کاربران آنلاین رو میده برای کاربران کل هم یک جدول دیگه اضافه می کنی و هر موقع که داری به جدول آنلان یکی اضافه می کنی به جدول کل هم یکی اضافه کن البته این بستگی داره به شما که می تونی تاریخ کلید باشه ساعت کلید باشه و... که اگه تاریخ هست باید اگر در تاریخ مذکور رکوردی هست اونو update کنی و شمارنده رو به اضفه یک کنی
امید وارم که منظور رو گرفته باشی

khz-web1
یک شنبه 23 تیر 1387, 16:21 عصر
دوستان ای کاش 1 نمونه کد می گزاشتید....

khz-web1
یک شنبه 23 تیر 1387, 17:17 عصر
با راهنمایی های شما دوستان عزیز من تونستم کد زیر بنویسم ....


Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;data source=D:\ASP.NET\News\App_Data\news.mdb")
Dim sql As String
Dim cmd As New OleDbCommand
sql = "select counter from table2"
cmd.CommandText = sql
cmd.Connection = con
Dim dar As OleDbDataReader
Dim sqlup As String
Dim cmd1 As New OleDbCommand
Dim coun As String




con.Open()
dar = cmd.ExecuteReader
While dar.Read
coun = dar("counter")

End While
con.Close()
coun = coun + Application("counter")




sqlup = "UPDATE table2 set [counter]=@counter where id=1"
cmd1.Connection = con
cmd1.CommandText = sqlup
cmd1.Parameters.AddWithValue("@counter", coun.ToString)
con.Open()
cmd1.ExecuteNonQuery()
con.Close()
Label1.Text = coun


ولی نمیدونم چرا گاهی وقت ها قاطی می کنه و 2 تا 2تا میشماره و گاهی هم 10 تا 10 تا ....!!!

دوستان به نظر شما مشکل از کجاست ...

rezaei manesh
یک شنبه 23 تیر 1387, 17:25 عصر
ببین دوست من کد خاصی نیاز نداری فقط همون کد های ساده sql برای عملیات سه گانه همین
نگو که بلد نیستی ؟!! که می دونم بلدی
---
خوب کد هاتو الان دیدم
آقا خیلی ناجور نوشتی خدا وکیلی!
آی پی کو؟؟؟
اون 1 چی هست ؟
شما باید هر بار آی پی طرف رو ببری تو جدول 1 و اونو چک کنی (count)بگیری و اگر کوچکتر از 1 باشه یکی اضافه کنی به جدول 1 و همین طور در جدول 2 اضافه یا ویرایش کنی
در ضمن باید برای هر بار که از جدول یک کانت می گیری اطلاعات قدیمی مثلا 10 دقیقه پیش رو حذف کنی

khz-web1
یک شنبه 23 تیر 1387, 17:29 عصر
حامد جان شما لطف دارید عزیزم ....:قلب:

ولی نمیدونم چرا این مشکل را پیدا کرده .... به نظر دوستان مشکل از کجاست ؟


با تشکر فراوان

shocraneh
یک شنبه 22 آذر 1388, 18:53 عصر
من می خام تعداد بازدید کنندگان از یه صفحه مشخص رو با زبان ویبی داشته باشم . چه طوری ip کاربری که در حال رویت صفحه است رو تعیین کنم تا در پایگاه ذخیره بشه (یه جدول با دو فیلد ip و count کافیه ؟)
من نمی دونم از Global چه طوری استفاده کنم ؟؟؟؟