Ir para conteúdo

POWERED BY:

Arquivado

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

kania

Página esta extremamente lenta

Recommended Posts

Salve Salve galera, gente preciso de uma ajuda de vocês, não sei porque meu código esta rodando extremamente lento, tanto on-line como local, alguém consegue me dizer se é o código que está errado, ou poderia ser otimizado de uma melhor forma.

 

Link para teste on-line http://www.grupoeagle.com.br/iaki/versaobeta2010/?pg=lista_categorias.asp&IdCat=1

 

Obs.: Quando se entra a primeira vez entra rapidinho, se voltar a home e clicar para entrar em qualquer outra opção no menu esquerdo já fica lento.

 

<!--#include file="bd/config.asp"-->
<script src="SpryAssets/SpryCollapsiblePanel.js" type="text/javascript"></script>
<link href="SpryAssets/SpryCollapsiblePanel.css" rel="stylesheet" type="text/css" />
<%
	PaginaAtual = Cint(Request.Querystring("Pagina"))
	CF = Request.Querystring("CF")'VERIFICA SOMENTE COM FOTOS
	Session("CF") = CF
	SC = Request.Form("SC")'VERIFICA SOMENTE POR SUBCATEGORIAS
	SF = request.Form("SF")'VERIFICA SOMENTE POR FACILIDADES
	SE = Request.Form("SE")'VERIFICA SOMENTE POR ESTADOS
	PC = Request.Form("PC")'VERIFICA SOMENTE POR CIDADES
	PB = Request.Form("PB")'VERIFICA SOEMNTE POR BAIRROS
	Link = Request.ServerVariables("HTTP_REFERER") 
	IdCat = Request.QueryString("IdCat")

	'===============================================
	'VERIFICO O FILTRO BAIRROS
	'===============================================
		If PB <> "" Then
		PB = Split(PB, ";")
			For PBs = 0 to ubound(PB)
				PBsS = PBsS & PB(PBs)
			Next
			Session("PB") = PBsS
			
			SelPB = "AND cadastro_usuarios.bairro IN ("&Session("PB")&")"
			Response.Write SelPB
		End IF
	
	'===============================================
	'VERIFICO O FILTRO CIDADES
	'===============================================
		If PC <> "" Then
		PC = Split(PC, ";")
			For PCs = 0 to ubound(PC)
				PCsS = PCsS & PC(PCs)
			Next
			Session("PC") = PCsS
			
			SelPC = "AND cadastro_usuarios.cidade IN ("&Session("PC")&")"
		End IF
	
	
	'===============================================
	'VERIFICO O FILTRO ESTADOS
	'===============================================
		If SE <> "" Then
		SE = Split(SE, ";")
			For SEs = 0 to ubound(SE)
				SEsS = SEsS & SE(SEs)
			Next
			Session("SE") = SEsS
			
			SelSE = "AND cadastro_usuarios.estado IN ("&Session("SE")&")"
		End IF
	
	
	'===============================================
	'VERIFICO O FILTRO FACILIDADES
	'===============================================
		If SF <> "" Then
		SF = Split(SF, ";")
			For FA = 0 to ubound(SF)
				SFs = SFs & SF(FA)
			Next
			Session("SF") = SFs
			
			Conn.CursorLocation = 3
			Set RS = Server.CreateObject("adodb.recordset")
			SQL = "SELECT * FROM facilidades_anunciantes WHERE id_facilidade in ("&Session("SF")&")"
			RS.Open SQL,Conn,3,3
			
			TotalSF = RS.recordcount
	
			TSF = 0
			While Not RS.Eof
				TSF = TSF + 1
				If TotalSF = TSF Then
					IdSF = IdSF & RS("id_anunciante")&";"
				else
					IdSF = IdSF & RS("id_anunciante")&";"&","
				End If
			
			RS.MOVENEXT
			WEND
			
			IdSF = Split(IdSF, ";")
			For IdSF2 = 0 to ubound(IdSF)
				IdSF1 = IdSF1 & IdSF(IdSF2)
			Next
			
			RS.close()
			Set RS = Nothing
			
			SelSF = "AND facilidades_anunciantes.id_facilidade IN ("&Session("SF")&")"
			SelUsuarios = "AND cadastro_usuarios.id_cadastro IN ("&IdSF1&")"		
		End IF
	
	'===============================================
	'VERIFICO O FILTRO SUB CATEGORIAS
	'===============================================
		If SC <> "" Then
			SC = Split(SC, ";")
			For sb = 0 to ubound(SC)
				SCs = SCs & SC(sb)
			Next
			Session("SC") = SCs
			
			Conn.CursorLocation = 3
			Set RS = Server.CreateObject("adodb.recordset")
			SQL = "SELECT * FROM sub_categorias_anunciantes WHERE id_sub_categoria in ("&Session("SC")&")"
			RS.Open SQL,Conn,3,3
			
			TotalCad = RS.recordcount
	
			Total = 0
			While Not RS.Eof
				Total = Total + 1
				If TotalCad = Total Then
					IdCad = IdCad & RS("id_anunciante")&";"
				else
					IdCad = IdCad & RS("id_anunciante")&";"&","
				End If
			
			RS.MOVENEXT
			WEND
			
			IdCad = Split(IdCad, ";")
			For Id = 0 to ubound(IdCad)
				IdCad1 = IdCad1 & IdCad(Id)
			Next
			
			RS.close()
			Set RS = Nothing
			
			SelSubCat = "AND sub_categorias_anunciantes.id_sub_categoria IN ("&Session("SC")&")"
			SelUsuarios = "AND cadastro_usuarios.id_cadastro IN ("&IdCad1&")"
		End IF
	
	'SELECIONA TODOS OS REGISTRO ENCOTNRADOS
	Conn.CursorLocation = 3
	Set RS1 = Server.CreateObject("adodb.recordset")
	SQL1 = "SELECT cadastro_usuarios.id_cadastro, cadastro_usuarios.nome_fantasia, cadastro_usuarios.endereco,"&_
	" cadastro_usuarios.numero, cadastro_usuarios.complemento, cadastro_usuarios.bairro, cadastro_usuarios.cidade,"&_
	" cadastro_usuarios.estado, cadastro_usuarios.fone_celular, cadastro_usuarios.fone_fixo, cadastro_usuarios.produto,"&_
	" cadastro_usuarios.fone_comercial, cadastro_usuarios.fone_fax, cadastro_usuarios.logo, cadastro_usuarios.categoria, cidades.nome_cidade, estados.sgl_estado "&_
	" FROM cadastro_usuarios"&_
	" INNER JOIN categorias ON cadastro_usuarios.categoria = categorias.IdCategoria"&_
	" INNER JOIN estados ON estados.id_estado = cadastro_usuarios.estado"&_
	" INNER JOIN cidades ON cidades.id_cidade = cadastro_usuarios.cidade"&_
	" WHERE categorias.IdCategoria = '"&IdCat&"' AND cadastro_usuarios.id_nivel = 4"&_
	" "&SelUsuarios&""&_
	" ORDER BY cadastro_usuarios.produto DESC, cadastro_usuarios.nome_fantasia ASC"
	RS1.Open SQL1,Conn,3,3
	TotalId1 = RS1.recordcount
	
	Contar = 0
	While Not RS1.Eof
		Contar = Contar + 1
		If TotalId1 = Contar Then
			ArrId1 = ArrId1 & RS1("id_cadastro")&";"
			ArrUf1 = ArrUf1 & RS1("estado")&";"
			ArrCI = ArrCI & RS1("estado")&";"
			ArrBa1 = ArrBa1&"'" & RS1("bairro")&"'"&";"
		else
			ArrId1 = ArrId1 & RS1("id_cadastro")&";"&","
			ArrUf1 = ArrUf1 & RS1("estado")&";"&","
			ArrCI = ArrCI & RS1("estado")&";"&","
			ArrBa1 = ArrBa1&"'" & RS1("bairro")&"'"&";"&","
		End If
	
	RS1.MOVENEXT
	WEND
	
	ArrId1 = Split(ArrId1, ";")
	For i1 = 0 to ubound(ArrId1)
		ArrIds1 = ArrIds1 & ArrId1(i1)
	Next
	
	RS1.close()
    Set RS1 = Nothing
	
	'===============================================
	'VERIFICO SE FOI SELECIONADO ALGUM DOS FILTROS
	'===============================================	
	Conn.CursorLocation = 3
	Set RS = Server.CreateObject("adodb.recordset")
	Rs.Pagesize = 15
	
		If CF = "1" Then
			Set RsCF = Server.CreateObject("adodb.recordset")
			SQLCF = "SELECT cadastro_usuarios.id_cadastro"&_
			" FROM cadastro_usuarios"&_
			" INNER JOIN fotos_anunciantes ON cadastro_usuarios.id_cadastro = fotos_anunciantes.id_anunciante"&_
			" WHERE cadastro_usuarios.id_nivel = 4 AND fotos_anunciantes.id_anunciante IN ("&ArrIds1&")"&_
			" GROUP BY fotos_anunciantes.id_anunciante"&_
			" ORDER BY cadastro_usuarios.produto DESC, cadastro_usuarios.nome_fantasia"
			RsCF.Open SQLCF,Conn,3,3
				Filtro = RsCF.recordcount
			
				Filtrar = 0
				While Not RsCF.Eof
					Filtrar = Filtrar + 1
					If Filtro = Filtrar Then
						Fil = Fil & RsCF("id_cadastro")&";"
					else
						Fil = Fil & RsCF("id_cadastro")&";"&","
					End If
				RsCF.MOVENEXT
				WEND
				
				Fil = Split(Fil, ";")
				For f = 0 to ubound(Fil)
					fs = fs & Fil(f)
				Next
					If IsEmpty(fs) = True Then 
						fs = 0
					End If
				RsCF.close()
				Set RsCF = Nothing
				SelFotos = "AND cadastro_usuarios.id_cadastro IN ("&fs&")"
		End If
	
		SQL = "SELECT cadastro_usuarios.id_cadastro, cadastro_usuarios.nome_fantasia, cadastro_usuarios.endereco,"&_
		" cadastro_usuarios.numero, cadastro_usuarios.complemento, cadastro_usuarios.bairro, cadastro_usuarios.cidade,"&_
		" cadastro_usuarios.estado, cadastro_usuarios.fone_celular, cadastro_usuarios.fone_fixo, cadastro_usuarios.produto,"&_
		" cadastro_usuarios.fone_comercial, cadastro_usuarios.fone_fax, cadastro_usuarios.logo, cadastro_usuarios.categoria, cidades.nome_cidade, estados.sgl_estado "&_
		" FROM cadastro_usuarios"&_
		" INNER JOIN categorias ON cadastro_usuarios.categoria = categorias.IdCategoria"&_
		" INNER JOIN estados ON estados.id_estado = cadastro_usuarios.estado"&_
		" INNER JOIN cidades ON cidades.id_cidade = cadastro_usuarios.cidade"&_
		" INNER JOIN sub_categorias_anunciantes"&_
		" INNER JOIN facilidades_anunciantes"&_
		" WHERE categorias.IdCategoria = '"&IdCat&"' AND cadastro_usuarios.id_nivel = 4"&_
		" "&SelFotos&""&_
		" "&SelSubCat&""&_
		" "&SelUsuarios&""&_
		" "&SelSF&""&_
		" "&SelSE&""&_
		" "&SelPC&""&_
		" "&SelPB&""&_
		" GROUP BY cadastro_usuarios.id_cadastro"&_
		" ORDER BY cadastro_usuarios.produto DESC, cadastro_usuarios.nome_fantasia ASC"
	
	RS.Open SQL,Conn,3,3
	TotalId = RS.recordcount
	
	Conte = 0
	While Not Rs.Eof
		Conte = Conte + 1
		If TotalId = Conte Then
			ArrId = ArrId & Rs("id_cadastro")&";"
			ArrUf = ArrUf & Rs("estado")&";"
			ArrCI = ArrCI & Rs("cidade")&";"
			ArrBa = ArrBa&"'" & RS("bairro")&"'"&";"
		else
			ArrId = ArrId & Rs("id_cadastro")&";"&","
			ArrUf = ArrUf & Rs("estado")&";"&","
			ArrCI = ArrCI & Rs("cidade")&";"&","
			ArrBa = ArrBa&"'" & RS("bairro")&"'"&";"&","
		End If
	Rs.MOVENEXT
	WEND
If TotalId = 0 Then
%>

<div id="ErroSelect">
<p>Nenhum registro encontrado com os filtros solicitados</p>
<p><a href="<%=Link%>">Clique aqui para retornar</a></p>
</div>

<%else%>
<div id="GeralCategorias">
	<div id="ListaCategorias">
    	<div id="BarraInfoTopo">
        	<div id="QtdTotal">
            	<p>Encontrado(s): <strong><%=TotalId%></strong> anúncio(s)</p>
            </div>
            <div id="QtdPaginas">
            	<p>Exibindo <strong>15</strong> por página</p>
            </div>        
        </div>
<%	
			PaginaAtual = Cint(Request.Querystring("Pagina"))
		
			If PaginaAtual = 0 Then
				PaginaAtual = 1
			End If
			
			Rs.AbsolutePage = PaginaAtual
	        Num = Rs.PageCount
			
			Cont = 0
			While Not Rs.Eof And Rs.AbsolutePage = PaginaAtual
			Cont = Cont + 1
			
			If Rs("produto") = "2" OR Rs("produto") = "3" Then
			
				if Rs("logo") = "0" Then
					Logo = """imagens/sem_logo.png"""
				Else
					Logo = "imagens/"&Rs("logo")&""
				End IF
			
		%>
    	<div id="Business">
        	<table width="100%" border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td width="85" rowspan="3" valign="top">
                    <div id="Logo">
                        <table width="85" height="85" border="0" cellspacing="0" cellpadding="0">
                          <tr>
                            <td valign="middle"><img src=<%=Logo%> width="85"/></td>
                          </tr>
                        </table>
                    </div>
                </td>
                <td colspan="2" valign="top">
               	  <div id="NomeEmpresa"><a href="<%=Rs("id_cadastro")%>" title=""><%=Rs("nome_fantasia")%></a></div>
                </td>
              </tr>
              <tr>
                <td valign="top">
                	<div id="Dados">
                    	<p><%=Rs("endereco")%>, <%=Rs("numero")%></p>
              <p><%=Rs("bairro")%> - <%=Rs("nome_cidade")%>/<%=Rs("sgl_estado")%></p>
                        <p>Fone: <%=Rs("fone_fixo")%></p>
                        <p>Celular: <%=Rs("fone_celular")%></p>
                    </div>
                </td>
                <td valign="top">
                	<div id="Cat">
                    	<h4>Categorias:</h4>
                        <%
						Set RSCat = Server.CreateObject("adodb.recordset")
						SQL = "select * from sub_categorias AS A, sub_categorias_anunciantes AS B WHERE A.IdSubCategoria = B.id_sub_categoria and IdCategoria  = '"&Rs("categoria")&"' and B.id_anunciante = '"&RS("id_cadastro")&"'" 
						RSCat.Open SQL,Conn,3,3
						
							TotalCat = RSCat.recordcount
							X = 0
							
							WHILE NOT RsCat.EOF
							
							X = X + 1
								If TotalCat = X Then
						%>
                        		<a href="" title="<%=Lcase(RsCat("SubCategoria"))%>"><%=Lcase(RsCat("SubCategoria"))%></a>
                        <%							
								Else
						%>
                        		<a href="" title="<%=Lcase(RsCat("SubCategoria"))%>"><%=Lcase(RsCat("SubCategoria"))%></a>, 
                        <%		
								End If
						
                        RsCat.MOVENEXT
						WEND
						RsCat.close()
						set RsCat = nothing
						%>
                  </div>
                </td>
              </tr>
              <%
			  	Set RSDica = Server.CreateObject("adodb.recordset")
				SQL = "select * from dica_dia WHERE id_anunciante  = '"&Rs("id_cadastro")&"'" 
				RSDica.Open SQL,Conn,3,3
				
				If RSDica.eof Then
				
				Else
				WHILE NOT RSDica.EOF
				
				TxtDica = RSDica("texto_dica")
				ImgDica = RSDica("img_dica")
				
				RSDica.MOVENEXT
				WEND
				RSDica.close()
				set RSDica = nothing
			  %>
              <tr>
                <td colspan="2" valign="top">
                <table width="100%" border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td width="50"><img src="imagens/dica.png" width="45" height="26" /></td>
                    <td width="72">
                   	  <div id="ImgDica"></div>
                    </td>
                    <td>
                    	<div id="TxtDica">
                        	<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce tincidunt tortor sit amet massa gravida egestas. Ut id mattis lectus. Nam molestie elementum egestas. Integer.</p>
                        </div>
                    </td>
                  </tr>
                </table></td>
              </tr>
              <%End IF%>
            </table>
	  </div>
        <%Else%>
<div id="Livre">
        	<table width="100%" border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td width="85" rowspan="3" valign="top">
                    <div id="Logo"></div>
                </td>
                <td colspan="2" valign="top">
               	  <div id="NomeEmpresa"><%=Rs("nome_fantasia")%></div>
                </td>
              </tr>
              <tr>
                <td valign="top">
                	<div id="Dados">
                    	<p><%=Rs("endereco")%>, <%=Rs("numero")%></p>
                        <p><%=Rs("bairro")%> - <%=Rs("nome_cidade")%>/<%=Rs("sgl_estado")%></p>
                        <p>Fone: <%=Rs("fone_fixo")%></p>
                    </div>
                </td>
                <td valign="top">
                	<div id="Cat">
                    	<h4>Categorias:</h4>
                        <%
						Set RSCat = Server.CreateObject("adodb.recordset")
						SQL = "select * from sub_categorias AS A, sub_categorias_anunciantes AS B WHERE A.IdSubCategoria = B.id_sub_categoria and IdCategoria  = '"&Rs("categoria")&"' and B.id_anunciante = '"&RS("id_cadastro")&"'" 
						RSCat.Open SQL,Conn,3,3
						
							TotalCat = RSCat.recordcount
							X = 0
							
							WHILE NOT RsCat.EOF
							
							X = X + 1
								If TotalCat = X Then
						%>
                        		<a href="" title="<%=Lcase(RsCat("SubCategoria"))%>"><%=Lcase(RsCat("SubCategoria"))%></a>
                        <%							
								Else
						%>
                        		<a href="" title="<%=Lcase(RsCat("SubCategoria"))%>"><%=Lcase(RsCat("SubCategoria"))%></a>, 
                        <%		
								End If
						
                        RsCat.MOVENEXT
						WEND
						RsCat.close()
						set RsCat = nothing
						%>
                  </div>
                </td>
              </tr>
              
            </table>
        </div>
        <%
			End IF
			rs.MOVENEXT
            WEND
		%>
<div id="BarraNavegacao">
        	<div id="Links">
            	<p>Navegue: </p>
                <div id="Pg">                    
                    <ul>
                    <%
					  Anterior = PaginaAtual - 1
					  Proximo = PaginaAtual + 1
					  If Anterior <= 0 Then
					  Anterior = 1
					  End If
					
					  If Proximo > Rs.PageCount Then
					  Proximo = Rs.PageCount
					  End If
					
					  Jo = 1
					  While Jo <= Rs.PageCount
					
					  If PaginaAtual = Jo Then
					%>
                        <li><a href="?pg=lista_categorias.asp&Pagina=<%=Jo%>&IdCat=<%=IdCat%>&CF=<%=CF%>" title="Página" <%=Jo%>"><strong style=" color:#00F;">[ <%=Jo%> ]</strong></a></li>
                     <%Else%>
                     	<li><a href="?pg=lista_categorias.asp&Pagina=<%=Jo%>&IdCat=<%=IdCat%>&CF=<%=CF%>" title="Página" <%=Jo%>"><%=Jo%></a></li>
					<%
                      End If
                      Jo = Jo + 1
                      Wend
                    %>
                    </ul>
                </div>
            </div>
        </div>
        <%
		rs.close()
        set rs = nothing
		%>
    </div>
    <div id="Facilidades">
    	<p>Refine sua Busca</p>
      <div id="CollapsiblePanel1" class="CollapsiblePanel">
          <div class="CollapsiblePanelTab" tabindex="0">
			<table width="100%" border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td width="24" valign="middle"><img src="imagens/mais.png" alt="Como Funciona" /></td>
                <td valign="middle">Como funciona</td>
              </tr>
            </table>
    </div>
          <div class="CollapsiblePanelContent">
          	<span>- Para utilizar o filtro, selecione uma opção e clique em filtrar a lista é atualizada com este novo filtro</span><br /><br />
          </div>
      </div>
		<%If Session("CF") <> "" OR Session("SC") <> "" OR Session("SF") <> "" OR Session("SE") <> "" OR Session("PC") <> "" OR Session("PB") <> "" then%>
            <div id="TituloFiltrosSelecionados">
                <span>Filtros Selecionados</span>
            </div>
        <%
		End If
    '===============================================
	'VERIFICO SE FOI SELECIONADO O FILTRO DE FOTOS
	'=============================================== 
	  If Session("CF") = "1" Then
	  %>
	  <div id="FiltrosSelecionados">
        	<table width="100%" border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td colspan="2" valign="middle">
                <span>Somente anúncios com fotos</span>
                </td>
              </tr>
            </table>
      </div>
      <%
	'===============================================
	'CASO NÃO TENHA SIDO SELECIOANDO O FILTRO FOTO
	'=============================================== 
	  Else
	  %>
        <div id="ComFotos">
            <a href="?pg=lista_categorias.asp&IdCat=<%=IdCat%>&CF=1&SC=<%=SCs%>&SF=<%=SFs%>&SE=<%=SEsS%>&PC=<%=PCsS%>&PB=<%=PBsS%>">
            <label>
                <table width="100%" border="0" cellspacing="0" cellpadding="0">
                    <tr>
                        <td width="25" valign="middle"><img src="imagens/atualizar.png" /></td>
                        <td valign="middle"> Somente anúncios com fotos</td>
                    </tr>
                </table>
            </label>
            </a>
        </div>
      <%
	  End If
	'===============================================
	'VERIFICO SE FOI SELECIONADO O FILTRO SUB CATEGORIAS
	'=============================================== 
	  If Session("SC") <> "" Then
	  %>
	  <div id="FiltrosSelecionados">
        	<table width="100%" border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td colspan="2" valign="middle"><span>Sub-Categorias selecionadas</span></td>
              </tr>
              <tr>
                <td colspan="2" valign="middle">
                <ul>
				<%
					Set RS = Server.CreateObject("adodb.recordset")
					SQL = "SELECT SubCategoria FROM sub_categorias WHERE IdSubCategoria in ("&Session("SC")&")"
					RS.Open SQL,Conn,3,3
                    
                    While Not Rs.Eof
				%>
                    	<li><%=Rs("SubCategoria")%></li>
				<%
                    RS.MOVENEXT
                    WEND
				%>
                	</ul>
                <%	
                    RS.close()
                    set RS = nothing
                %>
                </td>
              </tr>
            </table>
      </div>
      <%
	'===============================================
	'CASO NÃO TENHA SIDO SELECIONADO O FILTRO SUB CATEGORIAS
	'=============================================== 
	  Else
	  %>
      <span class="TitulosFiltros">Sub-Categorias</span>
      <div id="fSubCat">
      	<form action="?pg=lista_categorias.asp&IdCat=<%=IdCat%>&CF=<%=Session("CF")%>&SC=<%=Session("SC")%>&SF=<%=Session("SF")%>&SE=<%=Session("SE")%>&PC=<%=Session("PC")%>&PB=<%=Session("PB")%>" method="POST" id="FormSC" name="FormSC">
          <div id="SubCat">
                 
       <%
                    Set RS = Server.CreateObject("adodb.recordset")
                    SQL = "SELECT sub_categorias.IdSubCategoria, sub_categorias.SubCategoria, sub_categorias.IdCategoria"&_
                    " FROM sub_categorias"&_
                    " INNER JOIN sub_categorias_anunciantes"&_
                    " ON sub_categorias.IdSubCategoria = sub_categorias_anunciantes.id_sub_categoria"&_
                    " WHERE sub_categorias.IdCategoria = "&IdCat&""&_
                    " GROUP BY sub_categorias.SubCategoria"
                    RS.Open SQL,Conn,3,3
                    
                    While Not Rs.Eof
                %>
                 <label>
                 	<input name="SC" type="checkbox" id="SC" value="<%=RS("IdSubCategoria")%>;" /> <%=RS("SubCategoria")%>
                 </label>
                     
                <%
                    RS.MOVENEXT
                    WEND
                    RS.close()
                    set RS = nothing
                 %>
          </div>
          		<table width="10px" border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td width="21"><img src="imagens/btn_azul_esq.png" /></td>
                    <td>
                    	<input type="submit" value="filtrar" class="btnfiltro"/>
                    </td>
                    <td width="21"><img src="imagens/btn_azul_dir.png" /></td>
                  </tr>
                </table>
        </form>
      </div>
      <%
	  End If
	'===============================================
	'VERIFICO SE FOI SELECIONADO O FILTRO FACILIDADES
	'=============================================== 
	  If Session("SF") <> "" Then
	  %>
	  <div id="FiltrosSelecionados">
        	<table width="100%" border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td colspan="2" valign="middle"><span>Facilidades selecionadas</span></td>
              </tr>
              <tr>
                <td colspan="2" valign="middle">
                <ul>
				<%
					Set RS = Server.CreateObject("adodb.recordset")
					SQL = "SELECT nome_facilidade FROM facilidades WHERE id_facilidade in ("&Session("SF")&")"
					RS.Open SQL,Conn,3,3
                    
                    While Not Rs.Eof
				%>
                    	<li><%=Rs("nome_facilidade")%></li>
				<%
                    RS.MOVENEXT
                    WEND
				%>
                	</ul>
                <%	
                    RS.close()
                    set RS = nothing
                %>
                </td>
              </tr>
            </table>
      </div>
      <%
	'===============================================
	'CASO NÃO TENHA SIDO SELECIONADO O FILTRO FACILIDADES
	'=============================================== 
	  else	
	  %>
      
      
      <span class="TitulosFiltros">Por Facilidades</span>
      <div id="fSoFacilidades">	
        <form action="?pg=lista_categorias.asp&IdCat=<%=IdCat%>&CF=<%=Session("CF")%>&SC=<%=Session("SC")%>&SF=<%=Session("SF")%>&SE=<%=Session("SE")%>&PC=<%=Session("PC")%>&PB=<%=Session("PB")%>" method="post" id="FormSF" name="FormSF">
          <div id="SoFacilidades">
              
		<%
                    ArrId = Split(ArrId, ";")
                        
                    For i = 0 to ubound(ArrId)
                        ArrIds = ArrIds & ArrId(i)
                    Next
    
                    Set RS = Server.CreateObject("adodb.recordset")
                    SQL = "SELECT facilidades.nome_facilidade, facilidades.id_facilidade,"&_
                    " facilidades_anunciantes.id_anunciante"&_
                    " FROM facilidades_anunciantes"&_
                    " INNER JOIN facilidades ON facilidades_anunciantes.id_facilidade = facilidades.id_facilidade"&_
                    " WHERE facilidades_anunciantes.id_anunciante in ("&ArrIds&")"&_
                    " GROUP BY facilidades.nome_facilidade"&_
                    " ORDER BY facilidades.nome_facilidade"
                    RS.Open SQL,Conn,3,3
                    
                    While Not Rs.Eof
                %>
                    
                    <label><input name="SF" type="checkbox" id="SF" value="<%=RS("id_facilidade")%>;" /> <%=RS("nome_facilidade")%></label>
                <%
                    RS.MOVENEXT
                    WEND
                    RS.close()
                    set RS = nothing
                 %>
          </div>
          		<table width="10px" border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td width="21"><img src="imagens/btn_azul_esq.png" /></td>
                    <td>
                    	<input type="submit" value="filtrar" class="btnfiltro" />
                    </td>
                    <td width="21"><img src="imagens/btn_azul_dir.png" /></td>
                  </tr>
                </table>
          </form>
      </div>
      <%
	  End IF
	'===============================================
	'VERIFICO SE FOI SELECIONADO O FILTRO ESTADO
	'=============================================== 
	  If Session("SE") <> "" Then
	  %>
	  <div id="FiltrosSelecionados">
        	<table width="100%" border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td colspan="2" valign="middle"><span>Estados selecionados</span></td>
              </tr>
              <tr>
                <td colspan="2" valign="middle">
                <ul>
				<%
					Set RS = Server.CreateObject("adodb.recordset")
					SQL = "SELECT nome_estado FROM estados WHERE id_estado in ("&Session("SE")&")"
					RS.Open SQL,Conn,3,3
                    
                    While Not Rs.Eof
				%>
                    	<li><%=Rs("nome_estado")%></li>
				<%
                    RS.MOVENEXT
                    WEND
				%>
                	</ul>
                <%	
                    RS.close()
                    set RS = nothing
                %>
                </td>
              </tr>
            </table>
      </div>
      <%
	'===============================================
	'CASO NÃO TENHA SIDO SELECIONADO O FILTRO ESTADO
	'=============================================== 
	  else	
	  %>
      <span class="TitulosFiltros">Por Estados</span>
       <div id="fPorEstados">   
          <form action="?pg=lista_categorias.asp&IdCat=<%=IdCat%>&CF=<%=Session("CF")%>&SC=<%=Session("SC")%>&SF=<%=Session("SF")%>&SE=<%=Session("SE")%>&PC=<%=Session("PC")%>&PB=<%=Session("PB")%>" method="post" id="FormSE" name="FormSE">
              <div id="PorEstados">
                
                <%
                        ArrUf = Split(ArrUf, ";")
                        
                        For f = 0 to ubound(ArrUf)
                            ArrUfs = ArrUfs & ArrUf(f)
                        Next
                    
                        Set RS = Server.CreateObject("adodb.recordset")
                        SQL = "SELECT estados.nome_estado, estados.id_estado"&_
                        " FROM cadastro_usuarios"&_
                        " INNER JOIN estados ON cadastro_usuarios.estado = estados.id_estado"&_
                        " WHERE cadastro_usuarios.estado IN ("&ArrUfs&")"&_
                        " GROUP BY estados.nome_estado"
                        RS.Open SQL,Conn,3,3
                        
                        While Not Rs.Eof
                        
                    %>
                        <label><input name="SE" type="checkbox" id="SE" value="<%=RS("id_estado")%>;"/> <%=RS("nome_estado")%></label>
                    <%
                        RS.MOVENEXT
                        WEND
                        RS.close()
                        set RS = nothing
                     %>
              </div>
      			<table width="10px" border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td width="21"><img src="imagens/btn_azul_esq.png" /></td>
                    <td>
                    	<input type="submit" value="filtrar" class="btnfiltro" />
                    </td>
                    <td width="21"><img src="imagens/btn_azul_dir.png" /></td>
                  </tr>
                </table>
            </form> 
       </div>
       <%
	   End IF
	'===============================================
	'VERIFICO SE FOI SELECIONADO O FILTRO CIDADE
	'=============================================== 
	  If Session("PC") <> "" Then
	%>  
	  <div id="FiltrosSelecionados">
        	<table width="100%" border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td colspan="2" valign="middle"><span>Cidades selecionadas</span></td>
              </tr>
              <tr>
                <td colspan="2" valign="middle">
                <ul>
				<%
					Set RS = Server.CreateObject("adodb.recordset")
					SQL = "SELECT nome_cidade FROM cidades WHERE id_cidade in ("&Session("PC")&")"
					RS.Open SQL,Conn,3,3
                    
                    While Not Rs.Eof
				%>
                    	<li><%=Rs("nome_cidade")%></li>
				<%
                    RS.MOVENEXT
                    WEND
				%>
                	</ul>
                <%	
                    RS.close()
                    set RS = nothing
                %>
                </td>
              </tr>
            </table>
      </div>
      <%
	'===============================================
	'CASO NÃO TENHA SIDO SELECIONADO O FILTRO CIDADE
	'=============================================== 
	  ElseIf Session("SE") <> "" Then	
	  %>
      <span class="TitulosFiltros">Por Cidades</span>
      <div id="fPorCidades">
      	<form action="?pg=lista_categorias.asp&IdCat=<%=IdCat%>&CF=<%=Session("CF")%>&SC=<%=Session("SC")%>&SF=<%=Session("SF")%>&SE=<%=Session("SE")%>&PC=<%=Session("PC")%>&PB=<%=Session("PB")%>" method="post" id="FormPC" name="FormPC">
          <div id="PorCidades">
						<%
                        ArrCI = Split(ArrCI, ";")
                        
                        For C = 0 to ubound(ArrCI)
                            ArrCIs = ArrCIs & ArrCI(C)
                        Next
                    
                        Set RS = Server.CreateObject("adodb.recordset")
                        SQL = "SELECT cidades.nome_cidade, cidades.id_cidade"&_
                        " FROM cadastro_usuarios"&_
                        " INNER JOIN cidades ON cadastro_usuarios.cidade = cidades.id_cidade"&_
                        " WHERE cadastro_usuarios.cidade IN ("&ArrCIs&")"&_
                        " GROUP BY cidades.nome_cidade"
                        RS.Open SQL,Conn,3,3
                        
                        While Not Rs.Eof
                        
                    %>
                        <label><input name="PC" type="checkbox" id="PC" value="<%=RS("id_cidade")%>;"/> <%=RS("nome_cidade")%></label>
                    <%
                        RS.MOVENEXT
                        WEND
                        RS.close()
                        set RS = nothing
                     %>
                     </div>
          		<table width="10px" border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td width="21"><img src="imagens/btn_azul_esq.png" /></td>
                    <td>
                    	<input type="submit" value="filtrar" class="btnfiltro" />
                    </td>
                    <td width="21"><img src="imagens/btn_azul_dir.png" /></td>
                  </tr>
                </table>
        </form>
      </div>
      <%
	  End If
	'===============================================
	'VERIFICO SE FOI SELECIONADO O FILTRO BAIRRO
	'=============================================== 
	  If Session("PB") <> "" Then
	%>  
	  <div id="FiltrosSelecionados">
        	<table width="100%" border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td colspan="2" valign="middle"><span>Bairros selecionados</span></td>
              </tr>
              <tr>
                <td colspan="2" valign="middle">
                <ul>
				<%
					Set RS = Server.CreateObject("adodb.recordset")
					SQL = "SELECT bairro FROM cadastro_usuarios WHERE bairro in ("&Session("PB")&") GROUP BY bairro"
					RS.Open SQL,Conn,3,3
                    
                    While Not Rs.Eof
				%>
                    	<li><%=Rs("bairro")%></li>
				<%
                    RS.MOVENEXT
                    WEND
				%>
                	</ul>
                <%	
                    RS.close()
                    set RS = nothing
                %>
                </td>
              </tr>
            </table>
      </div>
      <%
	'===============================================
	'CASO NÃO TENHA SIDO SELECIONADO O FILTRO BAIRRO
	'=============================================== 
	  ElseIf Session("PC") <> "" Then
	  %>
      <span class="TitulosFiltros">Por Bairros</span>
      <div id="fPorBairros">
	      <form action="?pg=lista_categorias.asp&IdCat=<%=IdCat%>&CF=<%=CF%>&SC=<%=SCs%>&SF=<%=Session("SF")%>&SE=<%=Session("SE")%>&PC=<%=Session("PC")%>&PB=<%=Session("PB")%>" method="post" id="FormPB" name="FormPB">
              <div id="PorBairros">
                <%
                        ArrBa = Split(ArrBa, ";")
                        
                        For PBs = 0 to ubound(ArrBa)
                            ArrBas = ArrBas & ArrBa(PBs)
                        Next
					
                        Set RS = Server.CreateObject("adodb.recordset")
                        SQL = "SELECT bairro"&_
                        " FROM cadastro_usuarios"&_
                        " WHERE bairro IN ("&ArrBas&")"&_
                        " GROUP BY bairro"
                        RS.Open SQL,Conn,3,3
                        
                        While Not Rs.Eof
                        
                    %>
                        <label><input name="PB" type="checkbox" id="PB" value="'<%=RS("bairro")%>';"/> <%=RS("bairro")%></label>
                    <%
                        RS.MOVENEXT
                        WEND
                        RS.close()
                        set RS = nothing
                     %>
              </div>
				<table width="10px" border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td width="21"><img src="imagens/btn_azul_esq.png" /></td>
                    <td>
                    	<input type="submit" value="filtrar" class="btnfiltro" />
                    </td>
                    <td width="21"><img src="imagens/btn_azul_dir.png" /></td>
                  </tr>
                </table>
        </form>
      </div>
      <%End If%>
  </div>
    <!--#include File="barra_banners_home.asp"-->
</div>

<script type="text/javascript">
<!--
var CollapsiblePanel1 = new Spry.Widget.CollapsiblePanel("CollapsiblePanel1", {contentIsOpen:false});
//-->
</script>
<%End IF%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem MUITOS if's mal estruturados

 

você lista os registros e usa um select so pra retornar a categoria?

 

Set RSCat = Server.CreateObject("adodb.recordset")
                         SQL = "select * from sub_categorias AS A, sub_categorias_anunciantes AS B WHERE A.IdSubCategoria = B.id_sub_categoria and IdCategoria  = '"&Rs("categoria")&"' and B.id_anunciante = '"&RS("id_cadastro")&"'" 
                         RSCat.Open SQL,Conn,3,3
                         
                             TotalCat = RSCat.recordcount
                             X = 0
                             
                             WHILE NOT RsCat.EOF
                             
                             X = X + 1
                                 If TotalCat = X Then
                         %>
                                 <a href="" title="<%=Lcase(RsCat("SubCategoria"))%>"><%=Lcase(RsCat("SubCategoria"))%></a>
                         <%                            
                                 Else
                         %>
                                 <a href="" title="<%=Lcase(RsCat("SubCategoria"))%>"><%=Lcase(RsCat("SubCategoria"))%></a>, 
                         <%        
                                 End If
                         
                         RsCat.MOVENEXT
                         WEND
                         RsCat.close()
                         set RsCat = nothing

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia desisto,

 

Então fera, este select é para retornar as Sub Categorias de cada cliente, exemplo:

 

Cliente A:

Categoria: Alimentos

Sub Categorias: Supermercados, Açougue, Hortifrute, Perfumaria, Limpeza, Utensílios

 

Ou seja este select é so para isto, pegar o ID da empresa e mostrar as Subs deste cliente

 

Você disse que meus If's estão mal estruturados, que dica pode me dar para estruturar eles melhor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu testei usando o INNER JOIN

 

select * from sub_categorias INNER JOIN sub_categorias_anunciantes ON sub_categorias.IdSubCategoria = sub_categorias_anunciantes.id_sub_categoria WHERE sub_categorias_anunciantes.id_anunciante = '"&RS("id_cadastro")&"'

mas mesmo assim ele fica lento, tem alguma outra coisa dentro do código que está gerando esta lentidão nesta página, só que ainda não consegui descobrir onde.

 

To pensando, será que pode ser por causa da quantidade de registros, apesar de eu estar utilizando uma paginação, com 15 registros por página.

 

Será que mudar a configuração dos cursores pode auxiliar? hoje esta assim

 

Conn.CursorLocation = 3
RS.Open SQL1,Conn,3,3

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá uma olhada nestes itens:

 

Cursores de Recordset

 

O tipo e a localização do cursor do recordset podem mudar drasticamente a performance da sua aplicação ASP.

 

A propriedade CursorLocation determina onde ficará o controle do cursor: Client ou Server. Sempre que possível utilize o cursor Server, se for necessário utilizar cursor Client, garanta que poucos registros serão retornados. O cursor Client traz todo o recordeset para a memória, e no caso de aplicação Web, fica na memória do Web-Server, um cursor Client com muitos registros em uma página que tem muitos acessos simultâneos pode gerar graves conseqüências.

 

A propriedade CursorType determina o tipo de cursor a ser usado: ForwardOnly, KeySet, Dynamic, Static. Em 90% dos casos o cursor ideal é o ForwardOnly pois é o cursor que tem menos recursos e menos custo. Evite atualizar, inserir e deletar registros através de cursores, prefira stored procedures ou instruções SQL.

 

 

 

Alternação entre códigos ASP e HTML '<% %>'

 

Evite ficar alternando entre códigos ASP e HTML <% %>, a alternação entre códigos afeta diretamente a performance da página.

Abaixo segue exemplo de como melhorar a performance de suas páginas retirando a alternação entre códigos:

 

Código de baixa performance:

 

'<%Do Until rsLinks.EOF %>
'<a href="<%=rsLinks("URL")%>"><%=rsLinks("NomeSite") %></a>
'<%rsLinks.MoveNext%>
'<%Loop%>

 

Código de alta performance:

 

 

'<%Do Until rsLinks.EOF
'Response.Write "<a href=""" & rsLinks("URL") & """>" & rsLinks("NomeSite") & "</a>"
'rsLinks.MoveNext
'Loop%>

 

Uso de funções / Variáveis de módulo

 

Nunca escreva grandes trechos de códigos diretamente nas páginas, no formato conhecido como código lingüíça. Use sempre Subs ou Functions para estruturar seu código. Um código bem estruturado facilita a manutenção e evita o uso desnecessário de recursos.

Limite-se ao uso de If ou Select Case e chamadas de funções diretamente na página.

Declare as variáveis dentro das funções ou subs, desta maneira menos recursos serão gastos. Em alguns casos são necessárias algumas variáveis de módulo para uso em várias funções, limite-se a variáveis de tipo simples (inteiras, strings, boleanas e etc), nunca declare variáveis do tipo Recordset fora de funções (em módulo).

 

 

Conversões Explicitas (Tipos de variáveis)

 

As linguagens de script não possuem tipos de variáveis declarados, para garantir a segurança e estabilidade de aplicação utilize sempre conversões ao atribuir valor às variáveis. Exemplo:

'intCdAssunto = CInt(Request.QueryString("CdAssunto"))

 

Includes

 

O uso de includes é muito útil e recomendado. Porém você precisa saber como os includes funcionam para utilizá-los de forma correta.

O Web-Server (IIS) substitui as chamadas dos includes pelos seus respectivos códigos antes de qualquer outra ação. Portanto a página ASP só será processada após todos os includes serem substituídos. Abaixo algumas dicas para o uso dos includes:

 

Não utilize includes de forma indiscriminada, pois quanto mais includes existirem em suas páginas mais tempo elas irão demorar para serem processadas.

Utilize os includes para uso de funções comuns.

Não utilize includes para estruturar o site, se uma página possuir um If ou um Select Case para escolher qual include utilizar, então, está na hora de você pensar em transformá-la em duas ou mais páginas distintas.

Nunca utilize duas chamadas do mesmo include na mesma página, se for necessário utilizá-lo duas ou mais vezes, transforme-o em uma função, declare o include no topo da página e efetue a chamada da função quantas vezes forem necessárias.

Evite o uso de includes dentro de includes, isso gera muita confusão no código.

 

Request

 

Evite o uso do Request("atributo"), sempre que possível utilize a coleção à qual você deseja efetuar o Request (Request.Form, Request.QueryString, Request.Cookies). O uso do Request deixa a página mais lenta.

 

Sessions

 

As variáveis de Session são muito úteis, porém perigosas. Uma variável Session ocupa espaço diretamente na memória RAM do servidor.

Recomenda-se armazenar em Session apenas o informações do tipo Id do usuário e controles de acesso, as demais informações devem ser armazenadas em Cookies

 

Você pode desabilitar o controle de Sessão em páginas que não necessitam, isso economiza recursos. Para desabilitar o controle de Sessão utilize o comando abaixo:

'<%@ EnableSessionState=False %>'

 

 

Leitura/Atribuição de Coleções (Request, Session, Application, Recordset, etc...)

A leitura e atribuição de valores à coleções é um processo lento, se sua página efetua repetidas leituras ou atribuições à coleções (Request.Form("parametro"), Request.QueryString("parametro"), Session("variavel"), Application("variavel") ou RecordSet("campo")) atribua o valor a uma variável e sempre que necessário utilize a variável.

 

Tratamento de Erro

 

O tratamento de erro em ASP é um grande problema, mas existe uma ótima solução para resolver a deficiência do ASP.

O On Error Resume Next é o único tratamento possível, porém se for usado de forma errada ele torna-se péssimo.

 

Veja o exemplo abaixo do uso do On Error Resume Next:

 

'<%
'On Error Resume Next


'Call SuaFuncao()

'If Err.Number <> 0 Then

'Call LogarErros()
'End If


'On Error Goto 0


'Sub SuaFuncao()
...
'End Sub


'Sub LogarErro()
'Response.Write "Ocorreu um erro inesperado (" & Err.number & " - " & err.Description & ")"
'Response.End
''SEU CÓDIGO PARA LOGAR EM BANCO DE DADOS, EVENT VIEWER, EMAIL, ETC...
'End Sub
'%>

 

Option Explicit

 

Alternação entre códigos ASP e HTML '<% %>'

Uso de funções / Variáveis de módulo

Sessions

Leitura/Atribuição de Coleções (Request, Session, Application, Recordset, etc..)

Conversões Explicitas (Tipos de variáveis)

Includes

Request

Cursores de Recordset

Tratamento de Erro

 

Option Explicit

Utilize sempre a opção Option Explicit em suas páginas ASP.

Utilizando Option Explicit, além de melhorar a performance das páginas você detectará erros de digitação imediatamente, evitando horas de depuração de código para descobrir que o problema era uma variável com alguma letra trocada.

 

Variavel de objeto - nome_da_variavel - utilizada em Session/Application

Armazenar um objeto ADO numa variável Session/Application, manterá um objeto criado aberto continuamente por cerca de 20 minutos fazendo com que a performance se seu site ou aplicação caia, principalmente com o aumento de acessos simultâneos.Para isso crie os objetos diretamente no script que irá utiliza-lo e destrua o mesmo assim que a utilização for concluída.

 

Nao utilizar VBScript.Encode

Mesmo sendo possível a utilização do Windows Script Encoder a utilziação deste poderar gerar um pico no processamento dentro dos nossos servidores.Certifique-se que realmente é necessário seu uso. Geralmente a utilização desta encriptação é utilizada em funções críticas, onde contenha dados como os de usuario e senha de banco de dados.

 

Mais de 5 Recordsets abertos na mesma pagina

Instanciar vários recordsets em um mesmo script irá causar além de lentidão a possibilidade de derrubar nossos servidores, dependendo da query, da base de dados utilziada e do tamanho que esta base possui.Verifique se todos os Recorsets criados são realmente necessários. Uma alternativa é de utilizar o mesmo recordset criado para uma mesma base fechando-o e reabrindo-o com uma nova query e destruí-lo quando a utilização do mesmo não for mais necessária.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa desisto, são 28 categorias e 750 SubCategorias, abaixo o sql das respectivas tabelas

Porem eu só chamo as Subs em outra tabela onde eu cadastros as Subs para determinado cliente, então não necessáriamente que tenha a Sub que ela esteja sendo chamada

 

Categorias

CREATE TABLE `categorias` (
  `IdCategoria` int(11) NOT NULL AUTO_INCREMENT,
  `Categoria` varchar(255) CHARACTER SET latin1 NOT NULL DEFAULT '0',
  `acessos` int(15) NOT NULL DEFAULT '0',
  `destaque` int(1) NOT NULL DEFAULT '0' COMMENT '0 = Sem Destaque, 1 = Primeiro Destaque, 2 = 2 Destaque, 3 = 3 Destaque',
  PRIMARY KEY (`IdCategoria`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=29 ;

SubCategorias

CREATE TABLE `sub_categorias` (
  `IdSubCategoria` int(11) NOT NULL AUTO_INCREMENT,
  `IdCategoria` int(11) NOT NULL DEFAULT '0',
  `SubCategoria` varchar(255) COLLATE latin1_general_ci NOT NULL DEFAULT '0',
  `acessos` int(15) NOT NULL DEFAULT '0',
  PRIMARY KEY (`IdSubCategoria`),
  KEY `IdCategoria` (`IdCategoria`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=751 ;

sub_categorias_anunciantes

CREATE TABLE `sub_categorias_anunciantes` (
  `id_sub_categoria` int(11) NOT NULL,
  `id_anunciante` int(11) NOT NULL DEFAULT '0',
  KEY `id_anunciante` (`id_anunciante`),
  KEY `id_sub_categoria` (`id_sub_categoria`),
  CONSTRAINT `sub_categorias_anunciantes_ibfk_2` FOREIGN KEY (`id_anunciante`) REFERENCES `cadastro_usuarios` (`id_cadastro`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `sub_categorias_anunciantes_ibfk_3` FOREIGN KEY (`id_sub_categoria`) REFERENCES `sub_categorias` (`IdSubCategoria`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

Opa xanburuzum, eu já uso o INNER veja

 

select * from sub_categorias INNER JOIN sub_categorias_anunciantes
ON sub_categorias.IdSubCategoria = sub_categorias_anunciantes.id_sub_categoria
WHERE sub_categorias_anunciantes.id_anunciante = '"&RS("id_cadastro")&"'

Agora tem como me passar um exemplo desse array que você esta falando em XML desisto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

o código que falei, executa primeiro um combobox, que apartir da categoria selecionado gera outro combobox com as sub-categorias, acredito, que irá te ajudar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

pra trabalhar melhor com sistema de categoria e subcat., é mais viavel usar XML um uma array contendo os nomes e a ID das sessoes

 

eu tenho cat e subcat, sao poucas, entao gravo no BD a ID e quando retorno uso array simples

 

 

 

anuncio - id categoria - retorno

 

xxx - 3 - array__categoria(3)

 

 

 

você pode usar XML caso sejam muitas categorias, mas ainda prefito a facilidade da array

 

 

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pera ai, mas acho que estamos falando de coisas diferentes, veja:

 

1 - O usuário entra no site e seleciona no menu a categoria que ele quer ver (este menu lista todas as 28 categorias)

2 - Uma vez escolhida a categoria, vai ser apresentado ao usuário todos os clientes que foram encontrados nesta categoria, listando 15 clientes por página;

2.1 - Dentro desta listagem de clientes é exibido alguns dados do cliente, entre eles em quais subcategorias ele está presente

 

Desta forma não vai ter uma combo para ele selecionar a categoria e depois a sub, a sub tem que aparecer automaticamente quando o cliente é apresentado.

Eu pego na tabela de sub_categoria_anunciantes, as sub categorias que foram cadastradas para ele.

 

Mas a pergunta é, você acredita que é esta busca que está deixando a página lenta?

Compartilhar este post


Link para o post
Compartilhar em outros sites

pq você simplesmente nao grava o nome da categoria junto ao registro?

 

id, cliente, categoria, id_categoria, sub, id_sub

 

assim você nao vai ter as selects apenas pra retornar o nome

Compartilhar este post


Link para o post
Compartilhar em outros sites

na verdade nesta select que eu estou fazendo eu pego todos os dados do banco

 

select * from sub_categorias INNER JOIN sub_categorias_anunciantes
ON sub_categorias.IdSubCategoria = sub_categorias_anunciantes.id_sub_categoria
WHERE sub_categorias_anunciantes.id_anunciante = '"&RS("id_cadastro")&"'

porque depois que a sub aparece, eu posso colocar um link nela de forma que se usuário clicar na sub ele abre outra lista com os clientes que sejam referenciados somente para aquela sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas qual problema do exemplo acima que te dei?

 

não ha necessidade de se ter um select so pra isso, é melhor resgatar os dados

 

 

 

 

eu trabalho assim

 

id, cliente, id_categoria

 

quando retorno o nome da categoria, uso uma array - array__cat(rs("id_categoria"))

Compartilhar este post


Link para o post
Compartilhar em outros sites

è que no meu caso não basta apenas eu ter o id da categoria eu preciso saber também que é o cliente naquele momento, pois as subs que eu apresento são referenciadas a categoria e ao cliente que se esta exibindo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei como esta sua página, mas talvez uma solução seria usar o ajax para selecionar a subcategoria, talvez assim, não fique tão lenta a pagina.

Uma coisa que faria mais como debug, seria ir colocando os if´s e loops um a um para ir verificando se todos estão montados corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

id, cliente, id_categoria, nome_categoria, id_subcategoria, nome_subcategoria

 

vai retornar tudo referente ao cliente

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora ficou bom, hehehe,

 

Esta funcionando localmente porem on-line o script esta dando pau

 

Vejam: http://www.grupoeagle.com.br/iaki/versaobeta2010/default.asp

 

Ao clicar em uma categoria no menu esquerdo ele abre dizendo que não foi encontrado nenhum registro, sendo que que estou testando no localhost aqui e esta funcionando, vai saber

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai e´que está não fiz nenhuma alteração nesta pagina, estou mexendo em outra neste momento, ai fui pegar o link pra passar a vcs e vi que não estava com este problema.

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.