PDA

View Full Version : آموزش: آمار بازدید از هر مطلب



Mcraft
پنج شنبه 18 خرداد 1391, 11:25 صبح
سلام دوستان.
من برای اینکه بتونم آمار بازدید از هر مطلب رو بدست بیارم از روش زیر استفاده میکنم.

Imports System.Data.SqlClient
Imports System.Data
Imports System.Drawing
Partial Class Default2
Inherits System.Web.UI.Page
' Dim ds As New DataSet
Dim con As New SqlConnection(System.Configuration.ConfigurationMa nager.ConnectionStrings("DatabaseConnectionString1").ConnectionString)
Dim com As New SqlCommand
Public matn As String = String.Empty
Public Status As Integer
Public n As Integer
Dim int_roindexgrid As Integer

Sub bind_grid()
Session("user") = False
Try
con.Open()
com.Connection = con
com.CommandText = "select * from mohammad where Active='" & Session("user") & "'"
Dim dta As New SqlDataAdapter(com)
' ds.Clear()
' dta.Fill(ds, "mohammad")
' GridView1.DataSource = ds
GridView2.DataBind()
Finally
If (Not com Is Nothing) Then com.Dispose()
con.Close()
End Try
End Sub

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
bind_grid()
End If
Dim CC As Integer = Request.QueryString("id")
TextBox2.Text = CC
End Sub

Protected Sub GridView2_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs ) Handles GridView2.RowCommand
Dim bool_see As Boolean = False
If e.CommandName = "system" Then
int_roindexgrid = e.CommandArgument
bool_see = True
If bool_see = True Then
red_mohammad()
up_mohammad()
End If
End If
End Sub

Sub red_mohammad()
con.Open()
com.Connection = con
com.CommandText = "select * from mohammad where id ='" & int_roindexgrid & "'"
Dim reader As SqlDataReader = com.ExecuteReader
If reader.HasRows Then
reader.Read()
Status = (reader("Status"))
End If
con.Close()
com.Dispose()
End Sub

Sub up_mohammad()
If Status > 0 Then
n = Status + 1
End If
con.Close()
com.Connection = con
com.CommandText = "update mohammad set Status=@Status where id='" & int_roindexgrid & "'"
com.Parameters.AddWithValue("Status", n)
Try
con.Open()
com.ExecuteNonQuery()
con.Close()
Catch ex As Exception
Response.Write(ex.Message)
Finally
If (Not com Is Nothing) Then com.Dispose()
con.Close()
End Try
End Sub
End Class

این کد کاملا درست کار میکنه، امااااااااااا ....
یه مشکلی که هست وقتی postback در LinkButton اجرا میشه ، اگه postback تو همون صفحه باشه درست کار میکنه . اما اگه اطلاعات به صفحه دیگری بره اونوقت counter عمل نمیکنه.
لازم به ذکر که با HyperLink نمیشه اینکار رو انجام داد.

TeacherMath
جمعه 19 خرداد 1391, 10:32 صبح
باید این کد در یک کلاس باشد.و آن را در هر صفحه فراخوانی کنی.

sam166
شنبه 31 تیر 1391, 23:46 عصر
دوست عزیز من برای یکی از پروژه های از این روش استفاده کردم
ALTER PROCEDURE [dbo].[AddCountNews]
(
@id numeric(18, 0)
)

AS
BEGIN

update TBL_News set ViewCount+=1 where ID=@id

END

این پروسیجر موقعی که شما روی ادامه مطلب میزنی که کل مطلب رو ببینی اجرا میشه
تو جدول اخبار فیلدی به نام ViewCount گذاشتم که مقدار پیش فرضش 0 است
حالا با هر بار دیدن خبر یکی به این فیلد اضافه میشه


موفق باشی

Fartaj
سه شنبه 24 مرداد 1391, 12:58 عصر
آخ چه جالب می خواستم تاپیک جدید بزنم

دوست عزیز من پروسجر رو گزاشتم و برای ورود به ادامه مطلب یک linkbutton گزاشتم commandname اون رو گذاشتم counter

و commandargument اون رو وصل کردم به id مطلب :


Eval("bookid")

postbackurl اون رو هم تنظیم کردم :


showbook.aspx?Code="+Eval("bookid")

یک فیلد هم گذاشتم برای ثبت تعداد بازدید

حالا باید تو صفحه مقصد چی کار کنم که به تعداد بازدید اون مطلب اضافه بشه ؟

neda555
جمعه 27 مرداد 1391, 00:20 صبح
منظورتون چیه خب داخل رویداد کلیک linkbutton اون کلاس یا پروسیجر را فراخوانی کنید...

fakhravari
دوشنبه 30 مرداد 1391, 14:45 عصر
آمار بازدید از هر مطلب.

کاربر باشه یا نباشه 2 بحث جداست.
کاربر باشه که معلوم کی اومده چنبار دیده و ...
اگر کاربر نباشه که با هر بار refresh +1 اضافه میشه.
فکر نکنم چیز سختی باشه