Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Netanias

[Resolvido] Como corrigir essa função

Recommended Posts

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele gera algum numero de erro ???

dá um response.write no code , para ver o que esta sendo passado de valor

Compartilhar este post


Link para o post
Compartilhar em outros sites

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...

Compartilhar este post


Link para o post
Compartilhar em outros sites

porque ao inves de passar em função, nao faz a conexao, cria o recordset, cria a SQL e exibe ele normalmente...

Compartilhar este post


Link para o post
Compartilhar em outros sites

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>
<% 
  Rptbra__index=Rptbra__index+1
  Rptbra__numRows=Rptbra__numRows-1
  bra.MoveNext()
Wend
%>
</div>
<div id="right" style="width:58%;">
<%
Dim Rptbra1__numRows
Dim Rptbra1__index

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>
<% Contbra = Contbra + 1 %>
<% 
  Rptbra1__index=Rptbra1__index+1
  Rptbra1__numRows=Rptbra1__numRows-1
  bra.MoveNext()
Wend
%>
<%
bra.Close()
Set bra = Nothing
%>
</div>
</div>

tah vendo.. imagine isso ae 10 vezes em uma única página... é muito grande...

por isso a função!

Compartilhar este post


Link para o post
Compartilhar em outros sites

são 10 conexoes ou 10 obj recordset com suas querys

e as consulas você pode criá-las dinamicamente também...

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso.. são 10 recordsets....

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode usar a mesma conexao e apenas criar a quantidade de recordset e suas SQL, e exibir normalmente

Compartilhar este post


Link para o post
Compartilhar em outros sites

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...

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 %>

Compartilhar este post


Link para o post
Compartilhar em outros sites

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....

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.