Ir para conteúdo

POWERED BY:

Arquivado

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

Arley Barros

*Menu com submenu com banco de dados

Recommended Posts

Olá pessoal,

 

Bom, é o seguinte, tenho uma consulta ao BD que retorna os dados que eu preciso para fazer um menu lateral igual a este, e são mais ou menos assim:

 

categoria1

prod1

prod2

prod3

categoria2

prod1

prod2

prod3

 

andei procurando por aí, mas só achei menus com itens fixos, mas realmente preciso que seja dinâmico, conto com a ajuda de todos que puderem me indicar algo.

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

voce quer que puxe as categorias e produtos do menu..de um banco de dados??

 

teria que ter o 2 tabelas

tabela categoria

tabela prod

 

na tabela categoria teria que ter os campos(vou passar o basico)

id_categoria

categoria

 

na tabela prod(itens) teria:

id_prod

id_cat

prod

 

para voce mostrar os itens e sub-itens no menu voce teria que fazer(no exemplo eu fiz bem simples...para aparecer um debaixo do outro...para fazer um na frente do outro igual akele lá, daih voce adapta pro seu caso):

 

<%Set objRs = Server.CreateObject("ADODB.Recordset")strQ = "SELECT * FROM categoria"objRs.Open strQ, conexao, , , &H0001Set objRs2 = Server.CreateObject("ADODB.Recordset")strQ2 = "SELECT * FROM prod WHERE id_cat=" & objrs("id")objRs2.Open strQ2, conexao, , , &H0001do while not objrs.eof	response.write "<b>" & objrs("categoria") & "</b><br>"		do while not objrs2.eof			response.write objrs2("prod") & "<br>"		objrs2.movenext		loopobjrs.movenextloop%>

fiz meio na correria..acho q eh isso mesmo

testa aih e passa o resultado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, percebi que você entendeu exatamente minha necessidade! é isso aí mesmo, até aí ja ta ok, o problema maior pra mim (o que pelo jeito é a coisa mais besta) é fazer aparecer as categorias em uma coluna e as subcategorias nos sub-menus no evento mouseover.

 

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

No fórum de JavaScript você encontra bastante coisa a respeito dos eventos e um suporte melhor nesse sentido ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

No fórum de JavaScript você encontra bastante coisa a respeito dos eventos e um suporte melhor nesse sentido ;)

Então, o menu javascript com dados fixos eu sei fazer, como preciso fazer com banco de dados + ASP, postei aqui...

Compartilhar este post


Link para o post
Compartilhar em outros sites

lembrei..na tabela de prod..precisa colocar um campo de link pra quando a pessoa clicar no item ir para a pagina...

 

peguei esse menu aih pra fazer:

http://www.maujor.com/tutorial/ddownmenu/horizontal-pt3.html

 

tutorial ensinando a fazer o menu:

http://www.maujor.com/tutorial/ddownmenu-a.php

 

nao testei mai testa aih:

 

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="pt-br" xml:lang="pt-br"><head><title>Horizontal Drop Down Menus - Parte 3</title><script type="text/javascript">function IEHoverPseudo() {var navItems = document.getElementById("primary-nav").getElementsByTagName("li");for (var i=0; i<navItems.length; i++) {if(navItems[i].className == "menuparent") {navItems[i].onmouseover=function() { this.className += " over"; }navItems[i].onmouseout=function() { this.className = "menuparent"; }}}}window.onload = IEHoverPseudo;</script><style type="text/css">body { font: normal 62.5% verdana; }ul#primary-nav,ul#primary-nav ul {margin: 0;padding: 0;width: 150px; /* Width of Menu Items */border-bottom: 1px solid #ccc;background: #fff; /* IE6 Bug */font-size: 100%;}ul#primary-nav li {position: relative;list-style: none;}ul#primary-nav li a {display: block;text-decoration: none;color: #777;padding: 5px;border: 1px solid #ccc;border-bottom: 0;}/* Fix IE. Hide from IE Mac \*/* html ul#primary-nav li { float: left; height: 1%; }* html ul#primary-nav li a { height: 1%; }/* End */ul#primary-nav ul {position: absolute;display: none;left: 149px; /* Set 1px less than menu width */top: 0;}ul#primary-nav li ul li a { padding: 2px 5px; } /* Sub Menu Styles */ul#primary-nav li:hover ul ul,ul#primary-nav li:hover ul ul ul,ul#primary-nav li.over ul ul,ul#primary-nav li.over ul ul ul { display: none; } /* Hide sub-menus initially */ul#primary-nav li:hover ul,ul#primary-nav li li:hover ul,ul#primary-nav li li li:hover ul,ul#primary-nav li.over ul,ul#primary-nav li li.over ul,ul#primary-nav li li li.over ul { display: block; } /* The magic */ul#primary-nav li.menuparent { background: transparent url(arrow.gif) right center no-repeat; }ul#primary-nav li.menuparent:hover,ul#primary-nav li.over { background-color: #f9f9f9; }ul#primary-nav li a:hover { color: #E2144A; }</style></head><body><%Set objRs = Server.CreateObject("ADODB.Recordset")strQ = "SELECT * FROM categoria"objRs.Open strQ, conexao, , , &H0001Set objRs2 = Server.CreateObject("ADODB.Recordset")strQ2 = "SELECT * FROM prod WHERE id_cat=" & objrs("id")objRs2.Open strQ2, conexao, , , &H0001response.write "<ul id='primary-nav'>"do while not objrs.eofresponse.write "<li class='menuparent'><a href='javascript:;'>"& objrs("categoria") &"</a>"response.write "<ul>"do while not objrs2.eofresponse.write "<li><a href='"& objrs2("link") &"'>" & objrs2("prod") & "</a></li>"objrs2.movenextloopresponse.write "</ul>"response.write "</li>"objrs.movenextloopresponse.write "</ul>"%></body></html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

captei, deu erro na seguinte linha:objRs.Open strQ, star, , , &H0001Os argumentos são incorretos, estão fora do intervalo aceitável ou estão em conflito.o que vem a ser &H0001?

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, desencana daquele erro, foi burrice minha mesmo (esqueci de incluir o arquivo de conexão)

 

dá uma olhada AQUI está quase feito, só que está mostrando os subitens só do primeiro produto...

 

 

QUASE LÁ muitissimo obrigado!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta esse:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="pt-br" xml:lang="pt-br"><head><title>Horizontal Drop Down Menus - Parte 3</title><script type="text/javascript">function IEHoverPseudo() {var navItems = document.getElementById("primary-nav").getElementsByTagName("li");for (var i=0; i<navItems.length; i++) {if(navItems[i].className == "menuparent") {navItems[i].onmouseover=function() { this.className += " over"; }navItems[i].onmouseout=function() { this.className = "menuparent"; }}}}window.onload = IEHoverPseudo;</script><style type="text/css">body { font: normal 62.5% verdana; }ul#primary-nav,ul#primary-nav ul {margin: 0;padding: 0;width: 150px; /* Width of Menu Items */border-bottom: 1px solid #ccc;background: #fff; /* IE6 Bug */font-size: 100%;}ul#primary-nav li {position: relative;list-style: none;}ul#primary-nav li a {display: block;text-decoration: none;color: #777;padding: 5px;border: 1px solid #ccc;border-bottom: 0;}/* Fix IE. Hide from IE Mac \*/* html ul#primary-nav li { float: left; height: 1%; }* html ul#primary-nav li a { height: 1%; }/* End */ul#primary-nav ul {position: absolute;display: none;left: 149px; /* Set 1px less than menu width */top: 0;}ul#primary-nav li ul li a { padding: 2px 5px; } /* Sub Menu Styles */ul#primary-nav li:hover ul ul,ul#primary-nav li:hover ul ul ul,ul#primary-nav li.over ul ul,ul#primary-nav li.over ul ul ul { display: none; } /* Hide sub-menus initially */ul#primary-nav li:hover ul,ul#primary-nav li li:hover ul,ul#primary-nav li li li:hover ul,ul#primary-nav li.over ul,ul#primary-nav li li.over ul,ul#primary-nav li li li.over ul { display: block; } /* The magic */ul#primary-nav li.menuparent { background: transparent url(arrow.gif) right center no-repeat; }ul#primary-nav li.menuparent:hover,ul#primary-nav li.ove???d?r { background-color: #f9f9f9; }ul#primary-nav li a:hover { color: #E2144A; }</style></head><body><%Set objRs = Server.CreateObject("ADODB.Recordset")strQ = "SELECT * FROM categoria"objRs.Open strQ, conexao, , , &H0001response.write "<ul id='primary-nav'>"	do while not objrs.eof		response.write "<li class='menuparent'><a href='javascript:;'>"& objrs("categoria") &"</a>"		response.write "<ul>"				Set objRs2 = Server.CreateObject("ADODB.Recordset")		strQ2 = "SELECT * FROM prod WHERE id_cat=" & objrs("id")		objRs2.Open strQ2, conexao, , , &H0001				do while not objrs2.eof			response.write "<li><a href='"& objrs2("link") &"'>" & objrs2("prod") & "</a></li>"			objrs2.movenext		loop		response.write "</ul>"		response.write "</li>"		objrs.movenext	loopresponse.write "</ul>"%></body></html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguém sabe como corrigir um "bug" nesse exemplo do crucifier...

 

Qdo o item não tem SUB-MENU correspondente, ele exibe uma LINHA CINZA embaixo...

 

Valeu

 

Ricardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha...faz +/- assim (a ideia eh primaria, pode ser melhorada)

faz um campo no banco de dados que seja booleano...daih na hora de cadastrar o menu vai ter uma opção:

[] com sub-categorias

[] sem sub-categorias

 

se a pessoa colocar com subcategoria, vai como 1 pro banco de dados

se colocar sem subcategoria, vai como 2 pro banco de dados

 

daih no codigo voce faz o seguinte:

 

do while not objrs.eofif objrs("subc") = "1" then 'abre if do subc 1		response.write "<li class='menuparent'><a href='java script:;'>"& objrs("categoria") &"</a>"		response.write "<ul>"				Set objRs2 = Server.CreateObject("ADODB.Recordset")		strQ2 = "SELECT * FROM prod WHERE id_cat=" & objrs("id")		objRs2.Open strQ2, conexao, , , &H0001				do while not objrs2.eof			response.write "<li><a href='"& objrs2("link") &"'>" & objrs2("prod") & "</a></li>"			objrs2.movenext		loop		response.write "</ul>"		response.write "</li>"end if 'fecha o if do subc 1if objrs("subc") = "2" then 'abreo if do subc 2 response.write "<li><a href='aousheou.htm'>"& objrs("categoria") &"</a></li>"end if 'fecha o if do subc 2		objrs.movenext	loop

testa aih e ve se da certo

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crucifier, funcionou... VALEU !!! http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

Aproveitei a sua idéia e dei uma melhorada.

Da forma que fiz não precisa acrescentar o campo subc, o próprio objRs2 checa se é EOF...

 

do while not objrs.eof		response.write "<li class='menuparent'><a href='java script:;'>"& objrs("categoria") &"</a>"				Set objRs2 = Server.CreateObject("ADODB.Recordset")		strQ2 = "SELECT * FROM prod WHERE id_cat=" & objrs("id")		objRs2.Open strQ2, conexao, , , &H0001		If objRs2.eof Then			response.write "</li>"		Else			response.write "<ul>"			do while not objrs2.eof				response.write "<li><a href='"& objrs2("link") &"'>" & objrs2("prod") & "</a></li>"				objrs2.movenext			loop		response.write "</ul>"		response.write "</li>"		end if 		objrs.movenext	loop
http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

Ricardo

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.