Ir para conteúdo
Fórum Script Brasil
  • 0

link igual da loja virtual


marvi

Pergunta

Olá pessoal,

Tive tentando aqui de várias formas mas não conseguir uma lógica legal para faze o seguinte: Eu queria fazer aqueles links que quando a pessoa vai navegando na loja virtual vai criando o caminho percorrido, tipo: inicio >> produtos >> celular

Um exemplo: Acesse esse link do submarino e veja:

http://www.submarino.com.br/homecache/baby...PrevCatId=75887

Lá tem os links Bebês >> Babás Eletrônicas

Linkados normalmente, como fazer isso?

Pois meus produtos / seção já gero normal no meu loop... mas quero colocar o link parecido acima. Meu loop é esse, pois ele exibi na horizontal, se servir:

<% Dim contador 
contador = 1
maxcol = 3

do while not tab3.eof 
conteudo=tab3("nome")
id=tab3("id_categoria")%>

<% 
if contador <= maxcol then %>
<td>
<table align=center border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber37">
<tr>
<td width="100%">
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#FFFFFF" width="100%" id="AutoNumber38" height="26">
<tr>
<td width="100%" bgcolor="#6699D0" height="26"> 
<p align="center"><font color="#FFFFFF">
<span style="font-size: 9pt; font-weight: 700">
<a href="produtosint.asp?id=<%=id%>" style="text-decoration: none"><font color="#FFFFFF"><%=conteudo%></font></a></span></font></td>
</tr>

</table>
</td>
</tr>
</table>
</td>
<% 
contador = contador + 1
tab3.movenext 
else %> 
</tr>


<% 
contador = 1

end if 
loop 

'completa as colunas 
do while contador <= maxcol %> 
<% contador = contador + 1 
loop %>

Obrigado!

Marcelo

Link para o comentário
Compartilhar em outros sites

25 respostass a esta questão

Posts Recomendados

  • 0

Daí Marcelo, sempre envolvido nessas lojas? rssssssss...

Olhei ali... esses links que você quer é tipo esses aqui do forum ne? tipo esse aqui no topo dessa pagina mesmo:

Fórum Script Brasil > Programação & Desenvolvimento > ASP

Tava pensando aqui em uma forma de fazer isso... confesso que nem olhei o seu codigo ainda pra não misturar minhas ideias... mas acho que tem uma forma bem facil e tranquila de fazer...

assim:

Uma forma seria resgatar a sua url atual e colocala em um campo hidden, na proxima página da um request nesse campo hidden, salva a nova url em um outro hidden e assim sucessivamente...

O que acha? Nunca fiz isso... mas acho que desse jeito funciona viu!

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

Acho tranquilo então... e tenho dúvidas quanto ao split porque você pode trabalhar com:

request.ServerVariables("QUERY_STRING")
este comando só vai pegar a última parte do seu endereço apenas, tipo, ele não pega a parte http://www.seudiminio.com.br/, só pega o que vem depois disso, sacou? daí é facinho ir montando os links... começa a montar desde a primeira página e em todas você obedece o mesmo procedimento... os simbolos ">" você pode criar com condicionais... e com e o proprio link você monta com response.write... para montar o link completo você pode usar:
link = "http://www.seudiminio.com.br/" & request.ServerVariables("QUERY_STRING")
você vai exibindo os links assim:
response.write "você está aqui: " & "http://www.seudiminio.com.br/" & request.ServerVariables("QUERY_STRING") & ">"

Sacou?

qualquer. dúvida poste aí!

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

Assim não dar, pois da pagina http://localhost/afeirita/produtosint.asp?id=48 ele exibi o id=48 e se a pessoa clicar mais em uma seção gera id=49 e que por sinal substitui o id=48 que na verdade é para ter somado, tipo id=48 >> id=49 , pois ainda tenho que fazer uma consulta no banco para exibi os nomes e não esses números... entende?

Será que com esse comando faz?

Link para o comentário
Compartilhar em outros sites

  • 0

Eu entendo...

mas então... faça assim, nomei o primeiro link como link1, grave ele em sessão na proxima pagina o proximo link nomei como link2, grave em sessao, e vai apresentando ali em cima em loop for i to ubound... acho que rola sim!

Esse é o caminho... basta começar agora...

Ainda mais que você sabe qual é o máximo de sessão que poderá ter... então tipo se tiver no maximo 20 você cria condicionais para nominar o proximo link,

n = 1

if linksessao<%n%> = 1 then

linksessao <% n + 1%>

end if

n = n+1

fiz rapidinho mas a logica seria mais ou menos essa...

sacou?

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

hehe marvi ta pensando em ter filho é??

mas tipo quando eu fiz isso certa vez, eu tinha uma tabela de categorias. na tabela um dos campos era da categoria pai e o outro gravava o nivel dela. assim a tabela se relacionava recursivametne com ela mesma.

exemplo, você cria as primeiras categorias, de nivel 1, tipo eletronicos, brinquedos, livros, bebes, etc.

ai você quer criar as categorias filho. exemplo, chupeta, abaixo de bebe. supondo q bebe seja de nivel 1 com codigo 5, você grava a chupeta com nivel 2 (logo abaixo de bebe) e com o codigo do pai como 5 (pois chupeta é filho de bebe).

ai caso você quisesse ainda dividir chupeta em categorias. seila, chupeta rosa e chupeta azul, você criaria as duas categorias com o nivel 3, e filho de chupeta. exemplo, se o codigo de chupeta é 25, você grava 25 no codigo pai dos dois.

ficar tipo assim ó:

Codigo  | Nome        | Nivel   | Pai
-----------------------------------------------
1       | Eletronicos | 1      | 0
3       | Livros      | 1      | 0
5       | Bebês       | 1      | 0

10     | Televisão    |2        |1  'Código do pai = 1 (eletrônicos), portanto, esta abaixo de eletronicos
15     | Romance      |2        |3  'Código do pai = 3 (livros), portanto, esta abaixo de livros
25     | Chupeta      |2        |5  'Código do pai = 5 (bebes), portanto, esta abaixo de bebes

33     | Chp. azul    |3        |25  'Código do pai = 25 (chupeta), portanto, esta abaixo de chupeta
34     | Chp. rosa    |3        |25  'Código do pai = 25 (chupeta), portanto, esta abaixo de chupeta[/code] ai se você quiser mostrar assim:
[code]Bebês -> Chupeta -> Chupeta Azul
o q acontece é q, quando ele for abrir a pagina, você passa na querystring o codigo da chupeta azul. ai você vai fazendo o select ate chegar no nivel 1. mais ou menos assim:
categorias = ""

sql = "Select * From Categorias Where Codigo = " & Request.Querystring("codigo")
Set rs = cn.Execute(sql)
nivel = rs("Nivel")
categorias = rs("Nome")

q = Chr(34)
Do While nivel > 1
    sql = "Select * From Categorias Where Codigo = " & rs("Codigo_Pai")
    Set rs = cn.Execute(sql)

    nivel = rs("Nivel")
    categorias = "<a href=" & q & "http://www.pagina.com/produtos.asp?categorias=" & rs("Codigo") & q & ">" rs("Nome") & "</a> -> " & categorias
Loop[/code]

assim, o caminho todo fica na variavel categorias.

entenda q você não precisa gravar o caminho q ele clicou de link em link. pode olhar no site do submarino mesmo, ele faz sempre esse caminho q eu passei, uma categoria só e filha de outra categoria.

quando você abrir a vitrine da categora você so tem q fazer o caminho dela pra chegar ao pai.

agora, isso muda para os produtos. porque um produto pode ter mais de uma categoria. mas você não precisa gravar o caminho todo. na vitrine q ele tiver, você passa como querystring no link do produto, o codigo da categoria atual. ai você sabe de onde ele veio. assim você pode montar o mesmo caminho da vitrine. já q ele pode vir de mais de uma vitrine diferente, com querystring no link dos detalhes você pode saber de qual vitrine ele veio, etnende?? no fundo é bem simples.

veja se entendeu e se resolveu ai, qualquer coisa poste.

Link para o comentário
Compartilhar em outros sites

  • 0

Mas o problema está nos niveis... pois as categorias e subcategorias são criadas pelo usuário no painel... ele pode ter categoria e subcategoria de subcategoria e assim vai... já ate postei isso aqui antes... ai tenho uma tabela categoria e outra subcategoria...

Na categoria coloco as categorias na subcategoria coloco subcategoria e sub da subcategoria que acaba se autoreferenciando já que não tem "limites"

Tinha que ver uma maneira mais pratica... vou tentar achar algo aqui...

Link para o comentário
Compartilhar em outros sites

  • 0

Estou pegando o valor com request.ServerVariables("QUERY_STRING") e faço:

<%sql = "Select * from categorias where id_categoria = "&atalho&""

set tabatalhos = conexao.execute(sql)%>

 &gt;&gt; <%=tabatalhos("nome")%>

Ele exibi onde estou ai... se clico em Fraudas ele exibi fraudas... Mas dentro de fraudas tenho que clicar de novo que é uma subcategoria de fraudas chamada fraudas pequenas e assim ele exibi fraudas pequenas e o correito era exibir fraudas >> fraudas pequenas

Assim em subcateogiras fraudas pequenas tem outra subcategoria chamada azul... a pessa clica em azul e e exibi azul... e o certo obviamente é fraudas >> fraudas pequenas >> azul... E assim vai...

Editado por marvi
Link para o comentário
Compartilhar em outros sites

  • 0
Na categoria coloco as categorias na subcategoria coloco subcategoria e sub da subcategoria que acaba se autoreferenciando já que não tem "limites"

foi isso tb q eu fiz, e foi assim q eu expliquei, com a unica diferenca q as categorias e as subcategorias tão na mesma tabela. eu acho q o melhor seria usar uma tabela só. ai você sabe q as categorias são as q tem nivel 1. as de outro nivel são subcategorias.

mas você não precisa mudar o seu sistema, pode usar duas tabelas, mas ai adaptaria o codigo. quando chegasse no nivel 2 você pegava o proximo na tabela de categorias.

Ele exibi onde estou ai... se clico em Fraudas ele exibi fraudas... Mas dentro de fraudas tenho que clicar de novo que é uma subcategoria de fraudas chamada fraudas pequenas e assim ele exibi fraudas pequenas e o correito era exibir fraudas >> fraudas pequenas

então... é aquele codigo q eu passei la em cima. tipo, se ele clica em fralda pequena, imagino q você tenha um campo q guarde o codigo da (sub)categoria pai, não?? então você seleciona a (sub)categoria pai e poe ela na frente da string. e vai fazendo isso num for ate chegar no nivel 1. exatamente como faz o codigo q passei acima.

Link para o comentário
Compartilhar em outros sites

  • 0

Me confundir... olhei outra tabela antiga... minha tabela é uma só e ela faz referência dela mesmo...

Veja:

tabela.png

Só que não precisei criar a tabela nível... também porque o IDs... informa quem é sub de quem... O problema está nesse nivel... porque não é só colocar uma coluna na tabela e sim como isso vai ser inserido pelo painel de usuário...

Ele la cria uma categoria A, por exemplo, e depois clica na categoria A e tem uma opção lá para cria a subcategoria de A que é a sub B e depois clica em B e cria uma subcategoria C e assim vai...

Depois cria outra categoria AA e etc... Então fica ruim para ficar informando o nivel não?

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Kuroi... eu fiz assim e não deu! Na verdade ele ficou só processando e não exibiu nada... tive que derrubar o loop...

A tabela está:

tabela1.png

E fiz assim:

atalho = request.ServerVariables("QUERY_STRING")

categorias = ""

sql = "Select * From categorias Where id_categoria = " & atalho
Set rs = conexao.Execute(sql)
nivel = rs("Nivel")
categorias = rs("Nome")

q = Chr(34)
Do While nivel > 1
    sql1 = "Select * From Categorias Where id_categoriapai = '" & rs("id_categoria")&"'"
    Set rs1 = conexao.Execute(sql1)

    nivel = rs1("Nivel")
    categorias = rs1("Nome")
loop

Tem algo de errado? Acho que esse Do While fica processando e precisava de um wend... tentei colocar e dava erro...

Editado por marvi
Link para o comentário
Compartilhar em outros sites

  • 0

aqui você fez o contrario, olha:

sql1 = "Select * From Categorias Where id_categoriapai = '" & rs("id_categoria")&"'"
você tem q selecionar o pai pelo codigo do pai, o q você ta tentando selecionar em cima é o filho:
sql1 = "Select * From Categorias Where id_categoria = '" & rs("id_categoriapai")&"'"
e otra coisa, é q aqui você não ta montanod a string:
categorias = rs1("Nome")
você so ta preenchendo com o ultimo q ele achar (o pai de todos), veja como eu fiz la em cima.
categorias = "<a href=" & q & "http://www.pagina.com/produtos.asp?categorias=" & rs("Codigo") & q & ">" rs("Nome") & "</a> -> " & categorias
porque esse:
categorias = ""
em seu codigo?
opa, isso fui eu q passei la em cima, era so pra garantir q o categorias estivesse vazio, por conta da linha:
categorias = "<a href=" & q & "http://www.pagina.com/produtos.asp?categorias=" & rs("Codigo") & q & ">" rs("Nome") & "</a> -> " & categorias
q concatena categorias com ela mesma, mas na verdade a linha não seria necessaria, por conta dessa outra linha q acabei inserindo aqui:
categorias = rs("Nome")

mas acabei esquecendo de apagar do codigo. pode tirar se quiser, marvi

Link para o comentário
Compartilhar em outros sites

  • 0

Kuroi,

"você tem q selecionar o pai pelo codigo do pai, o q você ta tentando selecionar em cima é o filho:"

Mas o pai é o codigo original id_categoria e esse codigo_pai é só pai para as subcategorias, entende?

E ai Rafael, beleza sim... só essa programação chata... tu acredita que todos os problemas que postei aqui é só de um sistema? Menos o tal do controle de estoque!

Editado por marvi
Link para o comentário
Compartilhar em outros sites

  • 0

Kuroi,

Fiz isso:

categorias = "<a href=" & q & "http://localhost/afeirita/produtosint.asp?categorias=" & rs1("id_categoria") & q & ">" rs1("Nome") & "</a> -> " & categorias

Mas dar esse erro, consegue ver o erro:

/afeirita/produtosint.asp, line 115, column 118

categorias = "<a href=" & q & "http://localhost/afeirita/produtosint.asp?categorias=" & rs1("id_categoria") & q & ">" rs1("Nome") & "</a> -> " & categorias

---------------------------------------------------------------------------------------------------------------------^

A coluna 118 é & rs1("id_categoria") & q & ">" rs1("Nome") & essa parte em negrito

Editado por marvi
Link para o comentário
Compartilhar em outros sites

  • 0

Resolvir acho... fiz assim

atalho = request.ServerVariables("QUERY_STRING")


categorias = ""

sql = "Select * From categorias Where id_categoria = " & atalho
Set rs = conexao.Execute(sql)
nivel = rs("Nivel")
categorias = rs("Nome")

q = Chr(34)
Do While nivel > 1
    sql1 = "Select * From Categorias Where id_categoriapai = '" & rs("id_categoria")&"'"
    Set rs1 = conexao.Execute(sql1)

    nivel = rs1("Nivel")
categorias =" <a href=" & q & "http://localhost/afeirita/produtosint.asp?categorias=" & rs1("id_categoria") & q & ">"& rs1("Nome")& "</a>" & categorias
loop

Mas ai eu imprimo categorias, isso? Mas só fica processando e nada! ELe fica querendo travar, deve ser o loop não? Mesmo eu mudando os id_categoria..

Editado por marvi
Link para o comentário
Compartilhar em outros sites

  • 0

opa mas aqui você ta pegando o filho ainda:

sql1 = "Select * From Categorias Where id_categoriapai = '" & rs("id_categoria")&"'"
    Set rs1 = conexao.Execute(sql1)[/code] pra pegar o pai seria assim:
[code]sql1 = "Select * From Categorias Where id_categoria = '" & rs("id_categoriapai")&"'"
    Set rs1 = conexao.Execute(sql1)
Mas o pai é o codigo original id_categoria e esse codigo_pai é só pai para as subcategorias, entende?
imagina assim, a querystring passou o id 64, q corresponde a categoria "Econômico" de acordo com o print q você passou. agora qual é o pai dele?? você pega pelo campo id_categoriapai q vale 61 não?? então o pai dele é o codigo 61, é a categoria Sapeka, certo?? como você faz pra selecionar a categoria q tem o codigo 61?? seria isso aqui não?? Select * From Categorias Where id_categoria = 61 afinal é o codigo 61. e de onde vem esse codigo 61?? quando você selecionou a categoria 64, é no campo id_categoriapai q esta gravado o codigo 61. então é dele q você vai pegar, assim: sql1 = "Select * From Categorias Where id_categoria = '" & rs("id_categoriapai")&"'" mesmo fazendo assim continua travando?? se continuar, qual o tipo de dados do campo nivel no access?? tente fazer o while assim:
Do While CDbl(nivel) > 1
opa, achei um erro aqui, ainda: sql1 = "Select * From Categorias Where id_categoria = '" & rs("id_categoriapai")&"'" nessa linha tem q ser o rs1, pois é ele q é selecionado no loop, senao ele vai continuar pegando sempre a mesma coisa. tem q ser assim:
sql1 = "Select * From Categorias Where id_categoria = '" & rs1("id_categoriapai")&"'"
    Set rs1 = conexao.Execute(sql1)[/code] se ainda assim continuar travando, faca um teste de debug. tipo comente a linha do while atual e troque por:
[code]i = 0
Do While i < 10

ai antes do loop, de um Response.Write() no nome da categoria e some mais 1 na variavel i. assim vai aparecer na tela quais são as categorias q ele ta selecionando e ai a gente vai entender qual é o loop q ele ta fazendo.

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz:

sql1 = "Select * From Categorias Where id_categoria = " & rs1("id_categoriapai")&""
    Set rs1 = conexao.Execute(sql1)

Deu esse erro:

Erro de tempo de execução do Microsoft VBScript (0x800A000D)

Tipos incompatíveis: 'rs1'

/afeirita/produtosint.asp, line 112

E linnha 112 é: sql1 = "Select * From Categorias Where id_categoria = " & rs1("id_categoriapai")&""

Esse erro apareceu depois que coloquei esse rs1 e eu acho que é por causa do primeiro loop que dar esse erro já que não tem esse rs1 executado ainda... entende? Eu acho... mesmo estando dentro do loop...

qual o tipo de dados do campo nivel no access? O campo de nivel é texto de 50 caracters

Editado por marvi
Link para o comentário
Compartilhar em outros sites

  • 0
Esse erro apareceu depois que coloquei esse rs1 e eu acho que é por causa do primeiro loop que dar esse erro já que não tem esse rs1 executado ainda... entende? Eu acho... mesmo estando dentro do loop...

opa é verdade, nesse caso então use só o rs ou so rs1, não tem motivo pra usar dois rs. a não ser q você precise guardar o resultado do rs pra usar em outro lugar na pagina, ai nesse caso antes do while, então execute o mesmo select no rs1 tb.

qual o tipo de dados do campo nivel no access? O campo de nivel é texto de 50 caracters

nesse caso pode haver problema na comparacao, apesar de q eu acho q não. mas seria bom você usar o while assim como eu disse antes:

Do While CDbl(nivel) > 1

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz que você falou e deu problema... continua processando a maquina querendo travar...

atalho = request.ServerVariables("QUERY_STRING")

categorias = ""

sql = "Select * From Categorias Where id_categoria = '" & atalho&"'"
Set rs = conexao.Execute(sql)
nivel = rs("Nivel")
categorias = rs("Nome")

q = Chr(34)
Do While CDbl(nivel) > 1
  
    sql1 = "Select * From Categorias Where id_categoria = " & rs1("id_categoriapai")&""
    Set rs1 = conexao.Execute(sql1)
    
    nivel = rs1("Nivel")
    
categorias =" <a href=" & q & "http://localhost/afeirita/produtosint.asp?categorias=" & rs1("id_categoria") & q & ">"& rs1("Nome")& "</a>" & categorias
loop

%>

Tive pesquinsa, será que terá que fazer uma função recursiva para pegar isso. A partir da subcategoria final que é "fraudas pequenas" no exemplo, aí vai pegar o id da subcategoria que ela pertence, o ID da categoria que a outra pertence e por aí vai.... Só que não sei bem como fazer.

Mas antes, ainda ele continua processandooo... Estranho não?

Link para o comentário
Compartilhar em outros sites

  • 0
Mas antes, ainda ele continua processandooo... Estranho não?

estanho mesmo. tava olhando agora... o id da categoria é numerico ou tb é texto?? se for texto, faca assim ó:

sql1 = "Select * From Categorias Where id_categoria = '" & rs1("id_categoriapai")&"'"
e tb troque todos os rs1 por rs e ai veja se não funciona. porque tipo... fiz aqui um banco igualzinho ao seu... e copiei a sua funcao e aqui funcionou certinho assim q eu pus essas aspas e troquei tudo por rs. de uma olhada aqui: marvi.rar se você executar essa pagina com a querystring tipo assim:
http://endereco/pagina/marvi.asp?categoria=67

você vai ver q ele vai mostrar certinho assim:

Fraldas -> Linha infantil -> Sapeka -> Noturna

EDITADO:

quanto a fazer recursivamente tb é uma opcao, mas assim como funcionaria recursivamente tb tem q funcionar com o while, já q comecamos assim, acho melhor acabar com isso assim mesmo.

Editado por kuroi
Link para o comentário
Compartilhar em outros sites

  • 0

Kuroi, o exemplo que me mandou funcionou!

Mas fiz um comparativo aqui e até agora não encontrei diferença nenhuma do codigo! Deve ter algo sutil que não vimos e que estava dando problema!

Não se foi a troca só por rs e tal...

Muito obrigado mesmo!

Agora na hora de o usuário criar sua subcategoria no banco eu tenho que fazer uma contagem tipo 1+1 para inserir no campo nivel da tabela, isso?

Na verdade o que ocorre é:

Ele cadastra uma categoria chamada Casa e dentro dessa categoria uma subcategoria chamada Cadeira e dentro desta subcategoria outra subcategoria chamada Cadeira Azul e assim vai se preciso...

Mas ele pode ir e criar uma outra categoria chamada Prédio e dentro dessa categoria uma subcategoria chamada Apartamento e dentro desta subcategoria outra subcategoria chamada Apartamento de dois quartos e assim vai se preciso... Por exemplo.

Como processa a idéia de nível? Nivel 1 é sempre para as categorias e nivel 2,3 e etc são para subcategorias? Vou ter que fazer uma soma e reconhecer se ele é categoria ou subcategoria, isso?

Editado por marvi
Link para o comentário
Compartilhar em outros sites

  • 0
Como processa a idéia de nível? Nivel 1 é sempre para as categorias e nivel 2,3 e etc são para subcategorias? Vou ter que fazer uma soma e reconhecer se ele é categoria ou subcategoria, isso?

na verdade não é tão dificil. nivel 1 é so pra categoria sim. de 2 pra cima são as subs.

quando ele vai grava ele já seleciona a categoria pai não?? pra gravar no campo id_categoriapai, certo??

ai antes de gravar, você faz um select pegando a (sub)categoria e ai você grava, no filho, o nivel dela + 1.

veja se consegue ai, qualquer coisa poste.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...