locked
Comment insérer un compteur sur la page web RRS feed

  • Discussion générale

  • Voici une modalité pour implémenter un compteur dans une page asp.net.

     

    Les étapes principales de cette démarche sont :

    1.   Créer une table sur SQL Server pour garder le nombre de visites

    2.   Créer une méthode qui lit les valeurs de la table, les affiche sur une image et incrémente avec 1 le nombre des visites dans la table chaque fois que la page est chargée

    3.   Afficher une image sur la page web

     

    1.   On crée un table ‘Counter’ dans SQL Server avec deux colonnes numériques : ID, Val

    2.   On ajoute un composant Generic Handler dans l’application web (Handler1.ashx):

     

     

    Public Class Handler1
        Implements System.Web.IHttpHandler  
     
        Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
     
            Dim queryvalue = context.Request.QueryString("id")
            If (IsNumeric(queryvalue)) Then
     
     
                Dim aWidth As Integer = 60
                Dim aHeight As Integer = 30
     
     
                Dim aBgColor As Drawing.Color = Drawing.Color.White
     
     
                Dim aText As String
                aText = myCounter(queryvalue)
     
     
                Dim aFont As New Drawing.Font("Arial", 18, Drawing.FontStyle.Regular, Drawing.GraphicsUnit.Pixel)
                Dim aFontColor As Drawing.Color = Drawing.Color.Black
     
                Dim b As New Drawing.Bitmap(aWidth, aHeight, Drawing.Imaging.PixelFormat.Format24bppRgb)
                Dim g As Drawing.Graphics = Drawing.Graphics.FromImage(b)
                g.Clear(aBgColor)
                g.SmoothingMode = Drawing.Drawing2D.SmoothingMode.AntiAlias
     
     
                Dim SFormat As New Drawing.StringFormat
                SFormat.Alignment = Drawing.StringAlignment.Center
     
                g.DrawString(aText, aFont, New Drawing.SolidBrush(aFontColor), b.Width / 2, 5, SFormat)
     
                context.Response.Clear()
                context.Response.ContentType = "Image/Gif"
     
                'mettre l'image sur l'ecran d'utilisateur
                b.Save(context.Response.OutputStream, Drawing.Imaging.ImageFormat.Gif)
     
     
                b.Dispose()
                context.Response.Flush()
                context.Response.End()
            End If
        End Sub
     
        Public Function myCounter(ByVal queryvalue As Integer) As Integer
     
            Dim query As String = "Select Val from Counter where ID = " & queryvalue & ";"
            Dim myConn As New SqlConnection("Data Source=(local);Initial Catalog=TestDB;Integrated Security=True")
     
            Dim myCmd As SqlCommand = New SqlCommand(query, myConn)
     
            myConn.Open()
            Dim myReader As SqlDataReader = myCmd.ExecuteReader()
     
            Dim newcount As Integer
            While myReader.Read()
                newcount = (myReader("Val"))
            End While
     
            myReader.Close()
            myConn.Close()
     
            Dim newcountadd As Integer = (newcount + 1)
            Dim updatequery As String = "UPDATE Counter SET Val = " & newcountadd & " where ID = " & queryvalue & ";"
            Dim myCommand As New SqlCommand(updatequery, myConn)
     
            myCommand.Connection.Open()
            myCommand.ExecuteNonQuery()
            myConn.Close()
     
            Return newcount
        End Function
     
     
        ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
            Get
                Return False
            End Get
        End Property
     
    End Class

     

     

    3.   Sur la page Default.aspx on va implémenter un bouton qui fait submit chaque fois que l’utilisateur clique et une image qui aura comme source le résultat de Handler1.ashx.

    <div>
        <img alt="foo" src="Handler1.ashx?id=12" />&nbsp;
            <asp:Button ID="Button1" runat="server" Text="Button" />    
     </div>

     

    Pour commencer, on va mettre l’identifiant ‘12’ dans la colonne ID de la table sql, et la valeur ‘0’ dans la colonne Val. On peut implémenter plusieurs compteurs, chacun avec son identifiant et avec une ligne dans la table Counter pour compter le nombre d’affichages. Chaque fois que la page est rechargée, la valeur de Val sera incrémentée avec 1.

     

     

    Pour plusieurs tips&tricks sur ASP.NET, visitez la page Foire aux Questions – ASP.NET

     
    Alex Petrescu - MSFT
    mercredi 24 mars 2010 14:15
    Modérateur