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: </b></td><td
colspan=”2″><%=.Fields(“Imagem”)%></td></tr>
<tr><td><b>Nome: </b></td><td
colspan=”2″><%=.Fields(“Nome”)%></td></tr>
<tr><td><b>Link: </b></td><td
colspan=”2″><A HREF=”<%=.Fields(“Link”)%>” target=_new><%=.Fields(“Link”)%></A></td></tr>
<tr><td><b>Freq.: </b></td><td
colspan=”2″><%=.Fields(“Frequencia”)%></td></tr>
<tr><td><b>Percentagem em que surge: </b></td>
<td colspan=”2″><b><%=CalcPercent(.Fields(“Frequencia”),nFrequenciaTotal)%>%</b></td></tr>
<tr><td><b>Cliques: </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 banner)
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: <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: <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: </b></td><td><%=sImagem%></td></tr>
<tr><td><b>Nome: </b></td><td><%=sNome%></td></tr>
<tr><td><b>Link: </b></td><td><A
HREF=”<%=sLink%>” target=_new><%=sLink%></A></td></tr>
<tr><td><b>Freq.: </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”>[ <a
href=”default.asp”>Voltar ao Banner Ad Rotator</a> ] [ <a
href=”Javascript:window.close()”>Fechar</a> ]</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.
O desafio das APIs de pagamento instantâneo no backend moderno
Desafio das APIs | Pagar uma conta em segundos… conta de uma demanda que cresceu muito mais rápido do que os sistemas tradicionais conseguiam acompanhar.








Redação iMasters





