NOTÍCIA

Sistema de banner com upload

Olá amigos.

Veremos nesta matéria um código de sistema de rotação
de banners muito bom, criado em ASP e ainda utilizando Access. Primeiramente
baixaremos o arquivo em anexo chamado upload.inc.
Depois criaremos um banco de dados↳Banco de dados134 conteúdosSQL ou NoSQL: eis a questão!!Data · mar 2020Banco de dados: como organizar e dar segurança para milhões de dados de loteriasData · mai 20215 serviços gratuitos na cloud para bancos de dados PostgresData · fev 2025Ver tudo em Data → Access chamado banners com a tabela chamada
banners com os seguintes campos:

ID

AutoNumeração

Imagem

Texto

Link

Texto

Nome

Texto

Frequência

Número

Cliques

Números

1º Passo:
crie duas pastas. Uma chamada txt e a outra chamada imagens.
Na pasta txt, crie um arquivo de texto no seu bloco
de nota chamado BannersInfo.txt. Esse arquivo será o seu fichário.

2º Passo:
vamos criar o a arquivo para a conexão e configuração do script chamado funcoes.asp

<%

Dim DSN

‘ Conexão com o banco de dados
DSN = “driver={Microsoft Access Driver (*.mdb)};DBQ=” & Server.Mappath(“banners.mdb”)
& “;”

‘ Funcao que chama o banner
Function EscolherBanner()

 Dim PubBanner

 ‘ criamos uma instancia
Set PubBanner = Server.CreateObject(“MSWC.AdRotator”)

 ‘ Descreve em que
janela irá abrir
 PubBanner.TargetFrame = “TARGET=new”

 ‘ Defini o caminho para o
ficheiro com a informação dos Banners
 EscolherBanner = PubBanner.GetAdvertisement(“txt/bannersInfo.txt”)

 Set PubBanner = Nothing

End Function

‘ Funcao que remove os apostrofes
duma string SQL
‘ Exemplo:  novastring = SQLQuotes(“Vitor’s SQL string”)
Function SQLQuotes(sData)
 If IsNull(sData) or sData = “” or len(sData)=0 Then
  SQLQuotes = “NULL”
 Else
  SQLQuotes = “‘” & Replace(sData,”‘”,”””) & “‘”
 End If
End Function

‘  Funcao que calcula a porcentagem
de impressão de um banner
Function CalcPercent(ValorBase, Total)

 If ValorBase <> 0 and Total
<> 0 Then
  CalcPercent = CInt(( ValorBase / Total ) * 100)
   Else
    CalcPercent = 0
 End If

End Function
%>

3º Passo: Vamos criar o a
arquivo para o redirecionamento e contagem de cliques nos banners chamada
bnredir.asp

<!– #include file = “funcoes.asp” –>
<%
‘ Defino Response Buffer
Response.Buffer = True

Dim URLBanner, bannerImagem
Dim rsBanners, sSQL, sConn, rsActualizaContador
Dim TotalCliques, ContadorRegistos

‘ Obtenho a URL e a imagem
do banner na Querystring
URLBanner = Request.QueryString(“URL”)
bannerImagem = Mid(Request.QueryString(“image”),9)

‘  Acrescento  um hit
ao contador desse banner (na BD)
Set rsBanners = Server.CreateObject(“ADODB.Recordset”)
sSQL = “SELECT * FROM Banners WHERE Imagem = ” & SQLQuotes(bannerImagem)
With rsBanners
 .Open sSQL,DSN
 ContadorRegistos = 0
 Do Until .EOF
  ContadorRegistos = ContadorRegistos + 1
  .MoveNext
 Loop
 If ContadorRegistos = 1 Then
  .MoveFirst
  Set rsActualizaContador = Server.CreateObject(“ADODB.Recordset”)
  sSQL = “UPDATE Banners SET Cliques = Cliques + 1 WHERE ID = ” &
.Fields(“ID”)
  rsActualizaContador.Open sSQL,DSN
 End If
 .Close
End With
Set rsBanners = Nothing

‘ Limpa o Response e redireciona
o utilizador para a  URL
ponse.Clear()
Response.Redirect(URLBanner)
%>

4º Passo:
Vamos criar o arquivo para a administração e upload dos banners

<!– #include file = “funcoes.asp” –>
<!– #include file = “upload.inc” –>
<%
‘  Definição de todas as variáveis
Dim nID, sOP, sSubmit
Dim rsBanners, rsActBanner, rsApagaBanner, rsAdicionaBanner
Dim sErro, sSQL, Fields, CaminhoFicheiro
Dim sLink, sNome, sImagem, nFrequencia, nFrequenciaTotal

‘ nID – Identificador
do ID do Banner
‘ sOP – Guarda qual a operação a fazer
nID = Request.QueryString(“ID”)
sOP = Request.QueryString(“Op”)

‘   Atualiza o ficheiro
– vai recriar o ficheiro com a configuração dos banners
ActualizaFicheiroBanner()

‘ Se o ID que vem da QueryString
contiver algo
If Request.QueryString(“ID”) <> “” Then
‘  Quer dizer que ou vai fazer Edição ou Eliminação do registro
de um banner
‘ Mas vê se esta a fazer POST da informarão ou se tem de mostrar o form
e agir de acordo
 
Select Case sOp
  Case “editar”
   If  Request.ServerVariables(“REQUEST_METHOD”) = “POST”
Then
    GravarBanner()
     Else
      MostraForm()
   End If
  Case “apagar”
   If  Request.ServerVariables(“REQUEST_METHOD”) = “POST”
Then
    ConfirmaApagar()
     Else
      MostraApagar()
   End If
 End Select
  Else
‘  Se o ID não contiver nada então ou vai criar um novo registro
dos Banners
‘ vai mostrar a pagina principal de Administração
 
Select Case sOp
  Case “novo”
   If  Request.ServerVariables(“REQUEST_METHOD”) = “POST”
Then
    GravaNovo()
     Else
      MostraForm()
   End If
  Case Else
   MostraAdmin()
 End Select
End If

‘  Rotina que vai mostrar
a pagina principal de Administrarão
‘  Chama a rotina Cabeçalho, escreve o html↳HTML45 conteúdosA importância do HTML e CSS para quem trabalha com UI Design e Design SystemProduto & UX · dez 2024Como hostear seu site HTML gratuitamente com GitHub PagesDev (Back & Front) · jun 2025SQL Server – Como criar um versionamento de código das suas Stored Procedures em HTML e com comentários da alteraçãoData · nov 2020Ver tudo em Dev (Back & Front) → da pagina e chama
‘  a rotina Rodapé
Sub MostraAdmin()
 Call Cabecalho
%>
 <table cellpadding=”3″ cellspacing=”3″>
 <tr>
  <td height=”20″><A HREF=”admin.asp?Op=novo”>Adicionar
Novo Banner</a></td></td>
 </tr>
 </table>
<%
 Set rsBanners = Server.CreateObject(“ADODB.Recordset”)
 sSQL = “SELECT * FROM Banners”
 With rsBanners
  .Open sSQL,DSN
  If Not .EOF Then
   ‘  Vai achar o somatório de todas as freqüências
para poder usar no calculo
   ‘ da percentagem de cada uma em relação ao somatório
de todas
   
nFrequenciaTotal = 0
   Do Until .EOF
    nFrequenciaTotal = nFrequenciaTotal + .Fields(“Frequencia”)
    .MoveNext
   Loop
   ‘  Volta ao primeiro registro
   
.MoveFirst
   Do Until .EOF  %>
 <P>
 <table cellpadding=”3″ cellspacing=”3″ style=”font-family: Verdana;
font-size: 8 pt; font-weight: bold; border-collapse: collapse” bordercolor=”#111111″>
  <tr>
   <td height=”80″><IMG title=”<%=.Fields(“Nome”)%>”
height=60 alt=”<%=.Fields(“Nome”)%>”
        src=”imagens/<%=.Fields(“Imagem”)%>”
width=468 border=0></td>
   <td height=”80″><A HREF=”admin.asp?ID=<%=.Fields(“ID”)%>&Op=editar”>Editar</a></td>
   <td height=”80″><A HREF=”admin.asp?ID=<%=.Fields(“ID”)%>&Op=apagar”>Apagar</a></td>
  </tr>
 </table>
 <table cellpadding=”3″ cellspacing=”3″ style=”font-family: Verdana;
font-size: 8 pt; font-weight: bold; border-collapse: collapse” bordercolor=”#111111″>
  <tr><td><b>Ficheiro:&nbsp;</b></td><td
colspan=”2″><%=.Fields(“Imagem”)%></td></tr>
  <tr><td><b>Nome:&nbsp;</b></td><td
colspan=”2″><%=.Fields(“Nome”)%></td></tr>
  <tr><td><b>Link:&nbsp;</b></td><td
colspan=”2″><A HREF=”<%=.Fields(“Link”)%>” target=_new><%=.Fields(“Link”)%></A></td></tr>
  <tr><td><b>Freq.:&nbsp;</b></td><td
colspan=”2″><%=.Fields(“Frequencia”)%></td></tr>
  <tr><td><b>Percentagem em que surge:&nbsp;</b></td>
<td colspan=”2″><b><%=CalcPercent(.Fields(“Frequencia”),nFrequenciaTotal)%>%</b></td></tr>
  <tr><td><b>Cliques:&nbsp;</b></td><td
colspan=”2″><%=.Fields(“Cliques”)%></td></tr>
 </table>
<%    .MoveNext
   Loop
  End If
  .Close
 End With
 Set rsBanners = Nothing
 Call Rodape
End Sub  ‘ MostraAdmin

‘ Rotina que vai avaliar os
dados do form de Edicao de um banner
‘  Se estiverem ok, vai gravar em BD e voltar a pagina de administração
‘ Caso contrario, mostra o erro encontrado
Sub GravarBanner()

 Set Fields = GetUpload()

 sLink = Fields(“link”).Value.String
 sImagem = Fields(“imagem”).FileName
 sNome = Fields(“nome”).Value.String
 nFrequencia = Fields(“Frequencia”).Value.String

 sErro= “”
 If len(sLink) < 8 or left(sLink,7) <> “http://” Then sErro =
sErro & “Erro na ‘Frequencia'<BR>”
 If len(sNome) < 1 Then sErro = sErro & “Erro no ‘Nome'<BR>”
 If Not IsNumeric(nFrequencia) and nFrequencia >= 11 Then sErro = sErro
& “Erro no ‘Link'<BR>”
 ‘ Se a String com erros tiver vazia, grava. Se não, mostra
o erro e depois o form de novo
 
If Not len(sErro) > 0 Then
  Set rsActBanner = Server.CreateObject(“ADODB.Recordset”)
  sSQL = “UPDATE Banners SET “
  sSQL = sSQL & ” Nome = ” & SQLQuotes(sNome) & “, “
  sSQL = sSQL & ” Link = ” & SQLQUotes(slink) & “, “
  sSQL = sSQL & ” Frequencia = ” & nFrequencia
  ‘  Vai avaliar se será colocada nova imagem para
este banner
  ‘ Se estiver, também tem de colocar o nome no registro da B.D.

  If sImagem <> “” Then
   If Right(sImagem,4) = “.jpg” and Right(sImagem,4) = “.gif”
Then
 a = right(sImage,4)
    if a = “swf” or a = “SWF” then
   sRet = sRet & ” <OBJECT classid=””clsid:D27CDB6E-AE6D-11cf-96B8-444553540000″” 
codebase=””http://download.macromedia.
com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0″” WIDTH=” & nXSize
& ” HEIGHT=” & nYSize &”  id=ShockwaveFlash1><PARAM NAME=movie
VALUE=””” & sGifUrl & “””>”
   sRet = sRet & ” <PARAM NAME=quality VALUE=high><PARAM
NAME=bgcolor VALUE=#FFFFFF>”
   sRet = sRet & “<EMBED src=””” & sGifUrl & 
“”” quality=high bgcolor=#FFFFFF WIDTH=” & nXSize & “”” HEIGHT=””” &
nYSize & “”” TYPE=””application/x-shockwave-flash”” PLUGINSPAGE=””http://www.macromedia.
com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash””>”
   sRet = sRet & “</EMBED>”
   sRet = sRet & “</OBJECT>”

      End If

    CaminhoFicheiro
= Server.MapPath(“imagens”) & “” & sImagem
    Fields(“imagem”).Value.SaveAs CaminhoFicheiro
    sSQL = sSQL & “, Imagem = ” & SQLQuotes(sImagem)
   End If
  End If
  sSQL = sSQL & ” WHERE ID = ” & nID
   rsActBanner.Open sSQL,DSN
   Response.Redirect “admin.asp”
   Else
  Call MostraForm()
 End If
 
End Sub  ‘ GravarBanner

‘ Rotina que vai avaliar os
dados do form de novo banner
‘  Se estiverem ok, vai gravar em BD e voltar a pagina de administração
‘  Caso contrario, mostra o erro encontrado
Sub GravaNovo()
 ‘ Chama o GetUpload (presente no upload.inc) para obter os
campos do form
 
Set Fields = GetUpload()
 ‘ Preenche as variáveis, usadas adiante, com os valores corretos
 
sLink = Fields(“link”).Value.String
 sImagem = Fields(“imagem”).FileName
 sNome = Fields(“nome”).Value.String
 nFrequencia = Fields(“Frequencia”).Value.String

 sErro = “”
 If len(sLink) < 8 or left(sLink,7) <> “http://” Then sErro =
sErro & “Erro no ‘Link'<BR>”
 If len(sNome) < 1 Then sErro = sErro & “Erro no ‘Nome'<BR>”
 If Not IsNumeric(nFrequencia) Then sErro = sErro & “Erro na ‘Frequencia'<BR>”
 If Len(sImagem) < 4 Then sErro = sErro & “Erro no ficheiro da imagem<BR>”
 If Right(sImagem,4) <> “.jpg” and Right(sImagem,4) <> “.gif”
and Right(sImagem,4) <> “.swf” Then sErro = sErro & “Ficheiro de imagem
nao reconhecido<BR>”
 
 If Not len(sErro) > 0 Then
‘Defino o caminho para onde os banners serão guardados pelo upload

  CaminhoFicheiro = Server.MapPath(“imagens”)
& “” & sImagem
  Fields(“imagem”).Value.SaveAs CaminhoFicheiro
  Set rsAdicionaBanner = Server.CreateObject(“ADODB.Recordset”)
  sSQL = “INSERT INTO Banners (Nome, Link, Frequencia, Imagem, Cliques)
VALUES (“
  sSQL = sSQL & SQLQuotes(sNome) & “, “
  sSQL = sSQL & SQLQuotes(slink) & “, “
  sSQL = sSQL & nFrequencia & “, “
  sSQL = sSQL & SQLQuotes(sImagem) & “,0)”
  ‘response.Write sSQL
  ‘response.end
  rsAdicionaBanner.Open sSQL,DSN
  Response.redirect “admin.asp”
   Else
  Call MostraForm()
 End If
 
End Sub  ‘ GravaNovo

‘ Rotina que vai apagar o
registo de um banner
Sub ConfirmaApagar()

 If Request.Form(“submit”) = “Apagar”
Then
  Set rsApagaBanner = Server.CreateObject(“ADODB.Recordset”)
  sSQL = “DELETE FROM Banners WHERE ID = ” & nID
   rsApagaBanner.Open sSQL,DSN
   Response.redirect “admin.asp”
   Else
    Response.Redirect “admin.asp”
 End If

End Sub  ‘ ConfirmaApagar

‘  Rotina que vai recriar
o ficheiro com a informacao dos banners
‘  necessario para o Banner 
Sub ActualizaFicheiroBanner()

 Dim fso, FicheiroBanner
‘Defino aqui bordas do banner, tamanho, o arquivo que vai direcionar,
e a pasta que será o ficheiro

set fso = Server.CreateObject(“scripting.FileSystemObject”)
 set FicheiroBanner = fso.CreateTextFile(Server.Mappath(“txt/bannersinfo.txt”),
true)
 FicheiroBanner.WriteLine(“REDIRECT bnredir.asp”)
 FicheiroBanner.WriteLine(“WIDTH 468”)
 FicheiroBanner.WriteLine(“HEIGHT 60”)
 FicheiroBanner.WriteLine(“BORDER 0”)
 FicheiroBanner.WriteLine(“*”)

 Set rsBanners = Server.CreateObject(“ADODB.Recordset”)
 sSQL = “SELECT * FROM Banners”
 With rsBanners
  .Open sSQL,DSN
  Do While Not .EOF
   FicheiroBanner.WriteLine(“imagens/” & .Fields(“Imagem”))
   FicheiroBanner.WriteLine(.Fields(“Link”))
   FicheiroBanner.WriteLine(.Fields(“Nome”))
   FicheiroBanner.WriteLine(.Fields(“Frequencia”))
   .MoveNext
  Loop
  .Close
 End With
 FicheiroBanner.Close
 Set rsBanners = Nothing
 Set FicheiroBanner = Nothing
 Set fso = Nothing

End Sub  ‘ ActualizaFicheiroBanner

‘  Rotina que vai mostrar
o Form (para edicao ou criação de um banne
r)
Sub MostraForm()

 If sOP = “editar” and Request.ServerVariables(“REQUEST_METHOD”)
<> “POST” Then
  Set rsBanners = Server.CreateObject(“ADODB.Recordset”)
  sSQL = “SELECT * FROM Banners WHERE ID = ” & nID
  With rsBanners
   .Open sSQL,DSN
   If not .EOF Then
    sLink = .Fields(“Link”)
    sNome = .Fields(“Nome”)
    sImagem = .Fields(“Imagem”)
    nFrequencia = .Fields(“Frequencia”)
   End If
  End With
 End If
 Call Cabecalho
 %>
 <CENTER><FONT color=”red”><%=sErro%></FONT>
 <form method=post ENCTYPE=”multipart/form-data” action=”admin.asp?ID=<%=nID%>&Op=<%=sOp%>”>
  <TABLE cellpadding=”0″ cellspacing=”0″ border=”0″ align=”center”>
 <%If sOp = “editar” Then %>
   <tr>
    <td height=”40″><b>Editar Banner</b></td>
   </tr>
 <%  Else %>
   <tr>
    <td height=”40″><b>Adicionar Banner</b></td>
   </tr>
 <%End If %>
   <tr>
      <TD>Nome:<br><input type=”text”
name=”nome” size=”30″ value=”<%=sNome%>”><p></td>
   </tr>
   <tr>
      <TD>Link:<br><input type=”text”
name=”link” size=”30″ value=”<%=sLink%>”><p></td>
   </tr>
   <%If sOP = “editar” Then %>
    <tr>
     <td>Imagem atual:<br>
      <IMG SRC=”imagens/<%=sImagem%>”
title=”<%=sNome%>” alt=”<%=sNome%>”
      height=”60″ width=”468″ border=”0″><p></td>
    </tr>
    <tr>
     <TD>Nova Imagem:&nbsp;<input type=”file”
name=”imagem” value=”<%=sImagem%>” size=”20″>(optional)<p></td>
    </tr>
   <% Else %>
    <tr>
     <TD>Imagem:<input type=”file” name=”imagem”
value=”<%=sImagem%>” size=”20″><p></td>
    </tr>
   <%End If %>
   <tr>
      <TD>Frequencia:&nbsp;<input type=”text”
name=”frequencia” size=”2″ maxlength=”2″ value=”<%=nFrequencia%>”>(1-10)<p></td>
   </tr>
   <tr>
    <td><input type=”submit” value=”Gravar” name=”submit”></td>
   </tr>
  </TABLE>
 </form>
 </CENTER>
<%
 Call Rodape
 
End Sub  ‘ MostraForm

‘ Rotina q vai mostrar o Form
para eliminação de um registro
Sub MostraApagar()
 
 Call Cabecalho
 Set rsBanners = Server.CreateObject(“ADODB.Recordset”)
 sSQL = “SELECT * FROM Banners WHERE ID = ” & nID
 With rsBanners
  .Open sSQL,DSN
  If not .EOF Then
   sLink = .Fields(“Link”)
   sNome = .Fields(“Nome”)
   sImagem = .Fields(“Imagem”)
   nFrequencia = .Fields(“Frequencia”)
 %>
 <CENTER>
 <form action=”admin.asp?ID=<%=nID%>&Op=<%=sOp%>” method=”post”>
  <table>
   <tr>
    <td height=”40″><b>APAGAR BANNER</b></td>
   </tr>
   <tr>
    <td colspan=”2″ height=”80″><IMG title=”<%=sNome%>”
height=60 alt=”<%=sNome%>”
         src=”imagens/<%=sImagem%>”
width=468 border=0></td>
   </tr>
   <tr><td><b>Ficheiro:&nbsp;</b></td><td><%=sImagem%></td></tr>
   <tr><td><b>Nome:&nbsp;</b></td><td><%=sNome%></td></tr>
   <tr><td><b>Link:&nbsp;</b></td><td><A
HREF=”<%=sLink%>” target=_new><%=sLink%></A></td></tr>
   <tr><td><b>Freq.:&nbsp;</b></td><td><%=nFrequencia%></td></tr>
  </table>
  <input type=”submit” name=”submit” value=”Apagar”>
  <input type=”submit” name=”submit” value=”Cancelar”>
 </form>
 </CENTER>
<%  End If 
  .Close
 End With
 Set rsBanners = Nothing
 Call Rodape

End Sub  ‘ MostraApagar

Sub Cabecalho
%>
 <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>
 <html>
 <head><title>Administracao Banners</title><link rel=”stylesheet”
type=”text/css” href=”css/estiloformulrio.css”>
</head>
 <body leftmargin=”0″ marginwidth=”0″ topmargin=”0″ marginheight=”0″
bgcolor=”white” style=”font-family: Verdana; font-size: 8 pt; font-weight: bold”>
 <CENTER>
   <hr>
   <table border=”0″ cellpadding=”0″ cellspacing=”2″ width=”100%”>
    <tr>
     <td><font face=”Arial”><b>Administracao
de Banners</b></font></td>
     <td>
      <div align=”right”>
      <font color=”#0000ee”>[&nbsp;<a
href=”default.asp”>Voltar ao Banner Ad Rotator</a>&nbsp;]&nbsp;[&nbsp;<a
href=”Javascript:window.close()”>Fechar</a>&nbsp;]</font></div>
     </td>
    </tr>
   </table>
   <hr>
  </center>
 <p>
<%
End Sub

Sub Rodape
%>
 </body>
 </html>
<%
End Sub
%>

5º Passo::
para incluir um banner na sua página

‘ Antes do html
<!– #include file = “funcoes.asp”
–>
‘ Onde você quiser colocar o banner
<%=EscolherBanner()%>

Na próxima semana veremos o script de newslatter, muito bom totalmente
administrado.

Matérias especiais e reportagens conduzidas internamente pela Redação iMasters. Acompanhe no Twitter @imasters e no Instagram/Threads @portalimasters

Mais de Redação iMasters
Ver perfil →