- ASP Básico
    - Implementando um contador em suas páginas 
    ASP
 
-  
- Que tal um contador em sua página para indicar o número
        de acessos ? É bem mais simples do que você pensa.
        Vamos usar um arquivo texto para armazenar o número de
        acessos e incrementá-lo a cada requisição do usuário
        á nossa página.
-  
- As etapas envolvidas são as seguintes:
-  
- 1-) Criamos o objeto que permite o acesso a arquivos.
        Usamos o componente  FileSystemObject. (Poderiamos
        ter usado um banco de dados)
-  
- 2-) Criamos um arquivo texto para armazenar o valor do
        contador. Fazemos isso usando o nome do arquivo de script
        acrescido da extensão .cnt.  
3-) A cada requisição da página pelo usuário abrimos o
arquivo lendo o seu conteúdo e incrementando o valor de uma
unidade
    - 4-) Se o arquivo não existir iniciamos o contador do
        zero( iconta := 0)
5-) A seguir atribuímos o valor a uma variável 
iconta.
    - 6-) Fechamos os objetos e visualizamos o valor do
        contador.
-  
- O código script do arquivo contador.asp é
        dado a seguir
    
        | <%
' Declarando as variaveis usadas
Dim objFSO, objContador     ' variável de acesso a arquivos (FileSystemObject ) e objeto contador
Dim strArqTexto                     ' nome do arquivo texto
Dim iConta                            ' variavel que incrementa o contador
Dim I                                     ' variavel usada no loop
' Monta o nome do arquivo texto com extensão  .cnt a partir do nome do arquivo de script 
strArqtTexto = Server.MapPath(Request.ServerVariables("SCRIPT_NAME") & ".cnt")
'Cria o objeto de acesso ao arquivo texto 
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
' Abre o arquivo texto
Set objContador = objFSO.OpenTextFile(strArqTexto, 1, True)
' Le o conteudo atual do arquivo texto
If Not objContador.AtEndOfStream Then
	' determina o valor do contador
	iConta = CLng(objContador.ReadAll)
Else
	' se o arquivo nao existe inicia com zero
	iConta = 0
End If
' Fecha  o arquivo e destroi o objeto
objContador.Close
Set objContador = Nothing
' incrementa o contador
iConta = iConta + 1
' Sobrescreve o arquivo texto existente 
Set objContador = objFSO.CreateTextFile(strArqTexto, True)
' Salva e Atualiza o contador
objContador.Write iConta
' fecha e destroi o objeto
objContador.Close
Set objContador = Nothing
' Destroi o objeto  FSO 
Set objFSO = Nothing
escreve o  numero de acessos
Response.Write iConta
%> | 
    - Podemos implementar o script acima usando a diretiva
        include em uma página ASP. A sintaxe é dada a seguir:
<!-- #INCLUDE FILE="contador.asp" -->
Iremos aproveitar o exemplo anterior e incluir o arquivo contador.asp usando a diretiva include. O ínicio do script já com a diretiva include fica assim:
<html>
<head>
<TITLE>paginando.asp</TITLE>
</head>
<body bgcolor="#FFFFFF">
<!--#INCLUDE VIRTUAL="\ADOVBS.INC" -->
<!--#INCLUDE FILE="contador.asp" -->
<%
...
...
...
%>
<hr>
<b>Numero total de registros no Recordset <%=contador%></b><br>
<b>Numero de Acessos a esta página : <%=iconta%></b>
</BODY>
</HTML>
O resultado do processamento deste script é o seguinte:
    - Implementando um contador de páginas
        usando um banco de dados
-  
- Vamos fazer o mesmo serviço feito no exemplo anterior ,
        com uma diferença, vamos usar um banco de dados para
        armazenar o nome da página e o número de acessos que a
        mesma recebeu. Pode parecer um exagero usarmos um banco
        de dados para tal tarefa , afinal a utilização de
        componentes COM consome mais recursos do servidor, mas
        você pode pensar em um arquivo para estatísticas para
        justificar o exagero:
-  
- Os arquivos usados neste exemplo são:
-  
- 1-) contador.mdb  Um banco de dados para
        armazenar o nome da página e número de acessos. A
        tabela acessos , contida em contador.mdb, possui a
        seguinte estrutura:
    - Percebemos que a tabela acessos possui os seguintes
        campos:
a -) n_acessos ( Tipo Número )  que irá armazenar o
número de acessos da página
    - b-) pagina ( Tipo texto )  irá armazenar o nome da
        página  
-  
- 2-) contador_db.asp  O arquivo de script Asp
        onde temos o código que acessa o banco de dados
        contador.mdb , e, usando uma instrução SQL abre a
        tabela acessos e incrementa o contador toda vez que a
        página for acessada.
    
        | 
            <%' Usando uma função evitamos
                o conflito com nome de variaveis que' porventura o usuario esteja
                usando em seu codigoFunction Retorna_Acessos()variáveis ADOConst adOpenKeyset = 1Const adLockPessimistic = 2Const adCmdText = &H0001 ' Variáveis locaisDim strArquivoDim strSQLDim rsContadorDim iContador ' cria uma consulta SQL usando
                o nome do scriptstrArquivo =
                Request.ServerVariables("SCRIPT_NAME")strSQL = "SELECT pagina,
                n_acessos FROM acessos WHERE pagina='" &
                strArquivo & "';" ' abre um recordsetSet rsContador =
                Server.CreateObject("ADODB.Recordset") ' acesso a uma base de dados
                AccessrsContador.Open strSQL, _"Provider=Microsoft.Jet.OLEDB.4.0;Data
                Source=" &
                Server.MapPath("contador.mdb") &
                ";", adOpenKeyset, adLockPessimistic,
                adCmdText 'Se não existe registro ainda
                vamos incluir um registroIf rsContador.EOF ThenrsContador.AddNewiContador = 0rsContador.Fields("pagina").Value
                = strArquivoElse'Se já existe registro le o
                registro a atualiza o contadorrsContador.MoveFirstiContador =
                rsContador.Fields("n_acessos").ValueEnd If ' incrementa o contador e
                atualiza a base de dadosrsContador.Fields("n_acessos").Value
                = iContador + 1rsContador.Update ' fecha a conexaorsContador.CloseSet rsContador = Nothing ' retorna o contadorRetorna_Acessos = iContador + 1End Function%> | 
    - 3-) pagina1.asp  Uma página script de
        exemplo onde usamos a instrução  INCLUDE- para
        incluir o arquivo de script contador_db.asp
    
        | 
            <!-- #INCLUDE
                FILE="contador_db.asp" --><html><head><title>Pagina
                Um</title></head><body>A << PAGINA UM >> ja
                teve <%= Retorna_acessos() %> acessos</body></html> | 
    - 4-) pagina2.asp - Outra página de script de
        exemplo onde usamos a instrução  INCLUDE- para
        incluir o arquivo de script contador_db.asp
    
        | 
            <!-- #INCLUDE
                FILE="contador_db.asp" --><html><head><title>Pagina
                Dois</title></head><body bgcolor="white"
                text="blue">A << PAGINA DOIS >> ja
                teve <%= Retorna_acessos() %> Acessos</body></html> | 
    - A contagem é feita pelo arquivo 
    contador_db.asp que é incluido nas páginas que desejamos controlar o número
        de acessos. Cada vez que acessamos a pagina1.asp ou
        a  página2.asp o contador é incrementado as
        informações armazenadas na tabela acessos do banco de
        dados contador.mdb. As figuras a seguir ilustram  
O arquivo  contador_db.asp é uma função que retorna o
número de acesso para a página sendo visitada. Para ativar a
função basta usar a instrução  
    - <%=
        Retorna_acessos() %> na página que
        desejamos controlar.
A gravação é feita usando os métodos 
Addnew/Update da ADO
e a instrução SQL usada é a seguinte:
    - "SELECT pagina, n_acessos FROM
        acessos WHERE pagina='" & strArquivo &
        "';"
-  
- Onde temos que selecionar (SELECT) a página e o número
        de acessos da tabela (FROM) acessos onde a pagina for
        igual a variável strArquivo que armazena o nome do
        arquivo de script sendo executado.  
E estamos conversados , até o próximo artigo da 
série ASP Básico... 
    
    -  José Carlos Macoratti