Compteur de visite

Signaler
Messages postés
3
Date d'inscription
mercredi 5 mai 2004
Statut
Membre
Dernière intervention
30 septembre 2004
-
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
-
je cherche un moyen de compter le nombre de visites de chaque page .aspx exemple:

page1.aspx : nbrevisites :152
page2.aspx : nbrevisites :33
etc..

merci

6 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
c'est pas tres tres compliqué, j'ai pas le temps tout de suite de faire un exemple, mais peut etre ce soir, je te donne la marche à suivre

je te conseil d'ecrire tout ca dans un fichier xml tu auras un fichier xml de ce type

compteur.xml

152

33

apres tu n'auras qu'a lire ton fichier xml, rechercher le bon noeud lire le noeud incrementer le noeud de 1 enregistrer le fichier xml

c'est tout !

Si t'as pas compris, ou si tu y arrives pas, dis le moi

@+

Cyril
Messages postés
3
Date d'inscription
mercredi 5 mai 2004
Statut
Membre
Dernière intervention
30 septembre 2004

tout d'abord merci pour ton intervention et ta reponse c est tres sympa :)

je vois ce que tu veux dire je vais essayer d'implementer ca
et voir si ca peut resoudre mon probléme un peu de docs + un peu de café et ca devrait faire l'affaire das que ca marche je poste le code sur le forum que ca puisse aider les generations futures :) :)

thanks!
Messages postés
109
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
23 novembre 2010

une idée:par fichier.txt
faire fichier.txt avec une ligne par page initialisées à zéro
dans aspx :
<%import namespace="system.IO"%>
sub page_load(...)
dim gogo as streamreader;gaga as streamwriter;tableau as arraylist=new arraylist;numero,i as integer
if not is postback then
numero='celui de la page;1...
gogo=file.opentext("chemin du fichier.txt")
do
tableau.add(gogo.readline)
loop until gogo.readline is nothing
gogo.close
tableau(numero-1)=Cstr(Cint(tableau(numero-1)+1))
'on affiche: voir en fin
gaga=new streamwriter("mème chemin")
for i=0 to tableau.count-1
gaga.writeline(tableau(i))
gaga.close
end if

Jésusonline a l'air bien plus simple(mais niveau au dessus de:...pour les nuls)
Pour l'affichage:Cstr(int(num/(1+datediff("m",#dateouverturesite#,today)))) donne le nbre de visiteurs par mois.
Pour ce qui est de l'affichage des pages
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
lol

j'aime pas les fichiers texte ;)
xml c'est bien !!!
je fais un exemple ce soir si j'ai le temps avec XML apres tout le monde aura le choix ;)

@+

Cyril

PS : jesusonline est mon pseudo Cyril est mon prenom, et je prefere etre appelé Cyril :)
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
brut de brut :

Public Class PageStat

#Region " Properties "

    Private _XmlPath As String
    Public ReadOnly Property XmlPath() As String
        Get
            Return _XmlPath
        End Get
    End Property

#End Region

#Region " Variables "

    Private Page As System.Web.UI.Page

#End Region

    Private Function SetXmlPath() As String

        If Not Directory.Exists(Page.Server.MapPath("") & "\Data") Then
            Dim Dir As New DirectoryInfo(Page.Server.MapPath(""))
            Dir.CreateSubdirectory("Data")
        End If

        If Not File.Exists(Page.Server.MapPath("Data") & "\PageStat.xml") Then

            Try
                Dim FI As FileInfo
                FI = New FileInfo(Page.Server.MapPath("Data/PageStat.xml"))
            Catch ex As Exception
                ''' Certainement une erreur dans le nom du fichier
                ''' Je vois pas ce que je peux faire pour l'instant 
                ''' je relance l'erreur 
                Throw ex
            End Try

            'Creation du Fichier XML 
            Dim XMLobj As System.Xml.XmlTextWriter
            Dim ue As New System.[Text].UnicodeEncoding
            XMLobj = New System.Xml.XmlTextWriter(Page.Server.MapPath("Data/PageStat.xml"), ue)

            'indentation etc...
            XMLobj.Formatting = System.Xml.Formatting.Indented
            XMLobj.Indentation = 3
            XMLobj.WriteStartDocument()

            XMLobj.WriteComment("XML crée pour Enregistrer le nombre de passage sur une page par Cyril Durand")
            XMLobj.WriteComment("http://www.codes-sources.com/auteurdetail.aspx?ID=19303")
            XMLobj.WriteComment("crée le " & Now.ToLongDateString)

            XMLobj.WriteStartElement("Pages") 'Pages

            XMLobj.WriteEndElement() '/Pages

            XMLobj.Close()

        End If

        Return Page.Server.MapPath("Data/PageStat.xml")

    End Function

    Public Sub New(ByVal InstanceOfPage As System.Web.UI.Page)
        Page = InstanceOfPage
        _XmlPath = SetXmlPath()
    End Sub

    Public Sub WriteStat()

        Dim Compteur As Decimal = ReadStat()

        Dim Doc As New XmlDocument
        Doc.Load(Page.Server.MapPath("Data/PageStat.xml"))

        If Compteur = -1 Then

            'ajout des stats de la page 
            Dim mElement As XmlElement
            mElement = Doc.CreateElement("Page")
            mElement.InnerText = 1.ToString
            mElement.SetAttribute("PageName", Page.Request.CurrentExecutionFilePath)

            'Fermeture du fichier
            Doc.DocumentElement.AppendChild(mElement)
            Doc.Save(Page.Server.MapPath("Data/PageStat.xml"))

        Else

            Dim Node As XmlNode = Doc.DocumentElement.FirstChild

            Do Until Node Is Nothing

                If Node.Attributes(0).Value = Page.Request.CurrentExecutionFilePath Then
                    Node.InnerText = (Compteur + 1).ToString
                End If
                Node = Node.NextSibling
            Loop

            Doc.Save(Page.Server.MapPath("Data/PageStat.xml"))

        End If

    End Sub

    Public Function ReadStat(ByVal PageName As String) As Decimal
        Dim Doc As New XmlDocument
        Doc.Load(Page.Server.MapPath("Data/PageStat.xml"))

        Dim NodeList As XmlNodeList = Doc.DocumentElement.ChildNodes

        For Each Node As XmlNode In NodeList
            If Node.Attributes(0).Value = PageName Then
                Dim count As String = Node.InnerText
                Return CType(count, Decimal)
                Exit Function
            End If
        Next
        Return -1
    End Function

    Public Function ReadStat() As Decimal
        Return ReadStat(Page.Request.CurrentExecutionFilePath)
    End Function

End Class



attention ca vient juste de sortir du four, j'ai encore rien regardé à ce que j'ai fait (ie j'ai pas encore vérifier le code , bug possible etc) mais il fonctionne

Je vais le commenter et l'analyser j'en posterais une petite source ;)

pour s'en servir il faut faire :

Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim PS As New PageStat(Page)
PS.WriteStat()
Response.Write("Vous etes la " & PS.ReadStat & "ème visite")
End Sub

Je trouve ca qd meme plus elegant qu'un fichier texte ;)

@+

Cyril
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
27
Commenté et rapidement débuggé --> http://www.aspfr.com/code.aspx?ID=26535

n'hésitez pas à me dire ce que vous en pensez

Cyril