PDA

View Full Version : سوال: آمار بازديد از يك خبر



sara_mp
سه شنبه 24 آبان 1390, 12:33 عصر
سلام
من براي صفحه خبر ميخام امار بازديد از اون خبر رو نشون بدم اگه امكان داره من رو راهنمايي كنين.

oossaa
سه شنبه 24 آبان 1390, 13:06 عصر
خوب دوست عزیز واضحه که باید یه جدول تو پایگاه داده ت داشته باشی که با هر بازید یه مقدار counter++ بشه

sara_aryanfar
سه شنبه 24 آبان 1390, 13:10 عصر
البته به جای یه جدول جدا میتونی برای هر خبر یه فیلد اضافه کنی و بقیش مثل گفته دوستمون هست یعنی با هر بازدید یدونه اضافه کنی

sara_mp
سه شنبه 24 آبان 1390, 13:34 عصر
اگه يه مثال بزنيد يا نمونه كد بزاريد ممنون ميشم.

oossaa
سه شنبه 24 آبان 1390, 18:45 عصر
البته حرف خانوم آرایانفر هم صحیح هست اما اگه من گفتم جدول دلیلش این بود که یه فیلد مثلا ip داشته باشه که ip طرف هم ذخیره بشه و بتونی چک کنی که اگه یه کاربر 100 بارهم مشاهده کرد یه بار حساب بشه.
در کل کار ساده ای هستش فکر نمی کنم احتیاج به مثال باشه چون اگه جدول خبر اینا رو ساختی و برنامه نویسی کردی روال کار رو بلدی دیگه

FirstLine
جمعه 27 آبان 1390, 09:11 صبح
با سلام
یه فیلد News_Count توی جدول خبر بزار
توی StoredProcedure نمایش خبر وقتی میخوای خبر رو نمایش بدی News_Count= News_Count+1 کن
با تشکر

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

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 نمیشه اینکار رو انجام داد.