Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Eu criei essa função abaixo
<%
' Montar Seções da Home
'nms = Nome da Seção
'nmc = Nome do Conjunto de Registros
'nmt = Nome da Tabela
'qtd = Quantidade de Repetições da lista
Function Secoes(nms,nmt,qtd)
response.Write "<div id='clear' style='margin-bottom:30px;'>"
response.Write "<div id='left' style='width:38%;'>"
response.Write "<div id='titulosecao'>" & nms & "</div>"
Dim secao
Dim secao_numRows
Set secao = Server.CreateObject("ADODB.Recordset")
secao.ActiveConnection = MM_con_base_STRING
secao.Source = "SELECT * FROM " & nmt
secao.CursorType = 0
secao.CursorLocation = 2
secao.LockType = 1
secao.Open()
secao_numRows = 0
Dim rqtd__numRows
Dim rqtd__index
rqtd__numRows = 1
rqtd__index = 0
secao_numRows = secao_numRows + rqtd__numRows
While ((rqtd__numRows <> 0) AND (NOT secao.EOF))
LimpaUrl = secao("tit")
response.Write "<a href='" & UrlSite & "/" & secao("url") & "/mostra.asp?/" & secao("id") & "/" & CriaUrl(LimpaUrl) & "/' class='a1' title='" & secao("tit") & "'>"
If secao("img") <> "" Then
response.Write "<img src='" & UrlSite & "/conteudo/imagens/m_" & secao("img") & "' alt='" & secao("tit") & "' width='200' height='130' border='0' id='img-bottom' /><br />"
End If
If secao("icone") <> "" Then
response.Write "<img src='" & UrlSite & "/skin/" & secao("icone") &"' width='14' height='12' border='0' /> "
End If
response.Write "<strong>" & secao("tit") & "</strong></a>"
rqtd__index=rqtd__index+1
rqtd__numRows=rqtd__numRows-1
secao.MoveNext()
Wend
response.Write "</div>"
response.Write "<div id='right' style='width:58%;'>"
Dim rqtd1__numRows
Dim rqtd1__index
rqtd1__numRows = qtd
rqtd1__index = 0
secao_numRows = secao_numRows + rqtd1__numRows
Contsecao = 1
While ((rqtd1__numRows <> 0) AND (NOT secao.EOF))
LimpaUrl = secao("tit")
response.Write "<div style='margin-bottom:12px;'>"
response.Write "<a href='" & UrlSite & "/" & secao("url") & "/mostra.asp?/" & secao("id") & "/" & CriaUrl(LimpaUrl) & "/' class='a1' title='" & secao("tit") & "'"
If Contsecao = 1 Then
response.Write "style='font-weight:bold; font-size:20px; line-height:110%;'"
End If
response.Write ">"
If secao("icone") <> "" Then
response.Write "<img src='" & UrlSite & "/skin/" & secao("icone") & "' width='14' height='12' border='0' /> "
End If
response.Write secao("tit") & "</a>"
response.Write "</div>"
Contsecao = Contsecao + 1
rqtd1__index=rqtd1__index+1
rqtd1__numRows=rqtd1__numRows-1
secao.MoveNext()
Wend
secao.Close()
Set secao = Nothing
response.Write "</div>"
response.Write "</div>"
End Function
%>
Para chamá-la eu uso o seguinte:
<%
Call Secoes("Nome da Seção","nome_tabela",qtdderegistros)
%>
No entanto, quando chamo essa função duas vezes na mesma página, mesmo com nome de seção e nome da tabela diferente... a segunda chamada não retorna nenhum dado...
Como resolver isso?
Olha... Talvez esse código aí acima esteja mt grande pra entender... Vou resumir em uma simples função aki...
////// Criando a função....
<%
Function Secoes(secao,secao_numRows,rqtd__numRows,rqtd__index,rqtd1__numRows,rqtd1__index,nms,nmt,qtd)
'Aqui vai aparecer o título da seção
response.Write "<div>" & nms & "</div>" 'Esse nms é o nome da seção recebido
'Aqui é feito uma conexão com o BD
Set secao = Server.CreateObject("ADODB.Recordset")
secao.ActiveConnection = MM_con_base_STRING
secao.Source = "SELECT * FROM " & nmt 'Esse nmt é o nome da tabela recebido
secao.CursorType = 0
secao.CursorLocation = 2
secao.LockType = 1
secao.Open()
secao_numRows = 0
'Lista de notícias do lado esquerdo. Notícia 1
rqtd__numRows = 1
rqtd__index = 0
secao_numRows = secao_numRows + rqtd__numRows
While ((rqtd__numRows <> 0) AND (NOT secao.EOF))
LimpaUrl = secao("tit")
response.Write "<a href='url-de-destino'><strong>" & secao("tit") & "</strong></a>"
rqtd__index=rqtd__index+1
rqtd__numRows=rqtd__numRows-1
secao.MoveNext()
Wend
'Lista de notícias do lado direito. Notícias 2, 3, 4 e 5
rqtd1__numRows = qtd
rqtd1__index = 0
secao_numRows = secao_numRows + rqtd1__numRows
While ((rqtd1__numRows <> 0) AND (NOT secao.EOF))
response.Write "<a href='url-de-destino'>" & secao("tit") & "</a>"
rqtd1__index=rqtd1__index+1
rqtd1__numRows=rqtd1__numRows-1
secao.MoveNext()
Wend
secao.Close()
Set secao = Nothing
End Function
%>
O que essa função deve fazer é colocar duas colunas de notícias... esquerdo e direito... www.superconectado.com.br/home/ e veja a seção ESPECIAIS, por exemplo.
A chamada dessa função deve ser assim...
<%
Call Secoes("esp","espa","espnr","espid","espnr1","espid1","Especiais","home_tv",5)
%>
mas não está exibindo nada...
Já tentei assim também
<%
Function Secoes(nms,nmt,qtd)
...
End Function
%>
e chamando...
<%
Call Secoes("Especiais","home_tv",5)
%>
e exibe apenas a primeira seção... da segunda pra frente não exibe nada... acho q é pq repete os mesmos nomes de variáveis... e o ASP não aceita... sei lá...
Em resumo, essa função seria o seguinte:
1. A função teria a programação de conexão do BD e o layout
2. Quando eu chamar a função na página ASP, eu enviaria os parãmetros, Nome da Seção, Tabela onde estaria os dados e Quantidade de Notícias a sers exibidas..., no meu caso, 5 notícias.
Objetivo: Diminuir tempo de carregamentos de arquivos e diminuir código, tornando o site mais rápido...
porque ao inves de passar em função, nao faz a conexao, cria o recordset, cria a SQL e exibe ele normalmente...
kara, mas são quase 10 conexões em uma única página! tah mt pesada! quero diminuir a quantidade de códigos..
veh ae como fica cada seção de notícias...
<div id="clear" style="margin-bottom:30px;">
<div id="left" style="width:38%;">
<div id="titulosecao">Brasil</div>
<%
Dim bra
Dim bra_numRows
Set bra = Server.CreateObject("ADODB.Recordset")
bra.ActiveConnection = MM_con_base_STRING
bra.Source = "SELECT * FROM home_bra"
bra.CursorType = 0
bra.CursorLocation = 2
bra.LockType = 1
bra.Open()
bra_numRows = 0
%>
<%
Dim Rptbra__numRows
Dim Rptbra__index
Rptbra__numRows = 1
Rptbra__index = 0
bra_numRows = bra_numRows + Rptbra__numRows
%>
<%
While ((Rptbra__numRows <> 0) AND (NOT bra.EOF))
%>
<%
LimpaUrl = bra("tit")
%>
<a href="<%=UrlSite%>/conteudo/mostra.asp?/<%=bra("id")%>/<%=CriaUrl(LimpaUrl)%>/" class="a1" title="<%=bra("tit")%>">
<% If bra("img") <> "" Then %><img src="<%=UrlSite%>/conteudo/imagens/m_<%=(bra("img"))%>" alt="<%=bra("tit")%>" width="200" height="130" border="0" id="img-bottom" /><br /><% End If %>
<% If bra("icone") <> "" Then %><img src="<%=UrlSite%>/skin/<%=bra("icone")%>" width="14" height="12" border="0" /> <% End If %><strong><%=bra("tit")%></strong></a></div>
<div id="right" style="width:58%;">Rptbra1__numRows = 5
Rptbra1__index = 0
bra_numRows = bra_numRows + Rptbra1__numRows
%>
<% Contbra = 1 %>
<%
While ((Rptbra1__numRows <> 0) AND (NOT bra.EOF))
%>
<%
LimpaUrl = bra("tit")
%>
<div style="margin-bottom:12px;">
<a href="<%=UrlSite%>/conteudo/mostra.asp?/<%=bra("id")%>/<%=CriaUrl(LimpaUrl)%>/" class="a1" title="<%=bra("tit")%>"<% If Contbra = 1 Then %> style="font-weight:bold; font-size:20px; line-height:110%;"<% End If %>>
<% If bra("icone") <> "" Then %><img src="<%=UrlSite%>/skin/<%=bra("icone")%>" width="14" height="12" border="0" /> <% End If %><%=bra("tit")%></a>
</div></div>
</div>
tah vendo.. imagine isso ae 10 vezes em uma única página... é muito grande...
por isso a função!
são 10 conexoes ou 10 obj recordset com suas querys
e as consulas você pode criá-las dinamicamente também...
isso.. são 10 recordsets....
você pode usar a mesma conexao e apenas criar a quantidade de recordset e suas SQL, e exibir normalmente
poderia me dar um exemplo?
veja soh a mesma conexão eu estou usando.. no entanto, ainda tem mt código na página, quero diminuir...
olha este exemplo usando um rs para selecionar e outro rs para incluir
<!--#include file="conn/conexao1.asp"-->
<% 'abrir a conexao
call abreconexao
'crio o rsselect para verificar se os dados jah estaun cadastrados
set rsselect=server.createobject("ADODB.Recordset")
'crio o SQLselect
SQLselect="SELECT login FROM login WHERE login='"&varlogin&"'"
rsselect.open SQLselect,conexao,1,3
if not rsselect.eof then
response.redirect("incluir_form_treina.asp?msgeof=1")
set rsselect=nothing
else
'crio o rsinsert para inseiri os dados no bd
set rsinsert=server.createobject("ADODB.Recordset")
'crio o SQLinsert pra incluir no bd
SQLinsert="INSERT INTO login(login,senha,email) values('"&varlogin&"','"&varsenha&"','"&varemail&"')"
rsinsert.open SQLinsert,conexao,1,3
response.redirect("administracao_treina.asp?msg=1")
set rsinsert=nothing
end if
call fechaconexao %>beleza... num é exatamente o que eu quero, mas ok... obrigado pela atenção e paciência...
se eu descobrir como fazer esse "troço" funcionar, eu posto aki no fórum....
Velho, pode ser conflito, faça um este isoladamente, apenas carregado o conteúdo dessa sua function, não coloque mais nada, rode essa function sem outras conexões e selects, pode esta havendo um conflito, por N motivos, um deles são objetos não fechados no code, por isso a necessidade de fazer um teste isolado e saber de fato se o problema é lá ou no restante do code.
boa tarde..... tudo bem? resolvi o problema...
a questão é que a função estava tentando pegar um campo <fiel("url")> que não existia na tabela... daí ela nem mostrava o erro.. descobrir... vou corrigir...
Vlw xanburzum, pela disposição em ajudar e ao Patrique por lançar uma luz vaga, mas de grande clarão... filosofei, vlw?
ele gera algum numero de erro ???
dá um response.write no code , para ver o que esta sendo passado de valor