moonspell 0 Denunciar post Postado Janeiro 23, 2011 Boa noite a todos. Estou a tentar implementar um menu drop down Jquery. Tenho os menus e submenos em base de dados mysql. Antes o que fazia era simplesmente ao clicar num meno passava para a pagina seguinte enviando a categoria por url para abrir os sub-menus referentes ao menu principal. Menus são uma tabela e Sub-menus são outra tabela php. O que queria era tentar implementar um menu do genero que envio: Exemplo aqui Consigo que ele leia os menus principais no primeiro painel mas nos submenus já não estou a conseguir em condições. Alguém me pode dar uma ajudinha pfv. Envio os 2 ficheiros necessários: Ficheiro Jquery é o mesmo do exemplo em cima Ficheiro base php <script type="text/javascript" language="javascript" src="jquery.js"></script> <script type="text/javascript"> <!--//---------------------------------+ // Developed by Roshan Bhattarai // Visit http://roshanbh.com.np for this script and more. // This notice MUST stay intact for legal use // ---------------------------------> $(document).ready(function() { //slides the element with class "menu_body" when paragraph with class "menu_head" is clicked $("#firstpane p.menu_head").click(function() { $(this).css({backgroundImage:"url(down.png)"}).next("div.menu_body").slideToggle(300).siblings("div.menu_body").slideUp("slow"); $(this).siblings().css({backgroundImage:"url(left.png)"}); }); }); </script> <style type="text/css"> body { margin: 10px auto; font: 75%/120% Verdana,Arial, Helvetica, sans-serif; } .menu_list { width: 150px; } .menu_head { padding: 5px 10px; cursor: pointer; position: relative; margin:1px; font-weight:bold; background: #eef4d3 url(left.png) center right no-repeat; } .menu_body { display:none; } .menu_body a{ display:block; color:#006699; background-color:#EFEFEF; padding-left:10px; font-weight:bold; text-decoration:none; } .menu_body a:hover{ color: #000000; text-decoration:underline; } </style> <?php session_start();//iniciar o uso da variavel de sessão require ('../conectar_front.php'); error_reporting(0); // força a não mostrar erros.Colocar 0 para ambiente REAL e 1 para ambiente de teste $idcategoria=$_GET["sector"]; $sql_categoria_menu="SELECT * FROM galeria_categorias ORDER BY galeria_categorias_nome_pt ASC"; $query_categoria_menu=mysql_query($sql_categoria_menu); //executa a query e quarda o resultado no array $query $linha_categoria_menu=mysql_num_rows($query_categoria_menu); $sql_sector="SELECT * FROM galeria_sector INNER JOIN galeria_categorias ON galeria_sector.galeria_sector_categorias=galeria_categorias.galeria_categorias_id where galeria_sector_categorias = " . $_GET["categoria"]; $query_sector=mysql_query($sql_sector); //executa a query e quarda o resultado no array $query; $linha_sector=mysql_num_rows($query_sector); ?> <link href="../../css.css" rel="stylesheet" type="text/css" /> <p> </p> <div id="firstpane" class="menu_list" > <!--Code for menu starts here--> <?php while($linha_categoria_menu=mysql_fetch_array($query_categoria_menu)) { //enquanto existir valores no array ele executa o while e avança uma linha ?> <p class="menu_head"><?php echo $linha_categoria_menu["galeria_categorias_nome_pt"]; ?></p> <div class="menu_body"> <?php while($linha_sector=mysql_fetch_array($query_sector)) { //enquanto existir valores no array ele executa o while e avança uma linha ?> <a href="galerias.php?sector=<?php echo $linha_sector["galeria_sector_id"]; ?>&categoria=<?php echo $categoria; ?>"><?php echo $linha_sector["galeria_sector_titulo_pt"]; ?></a> <?php } //Aqui fecha o ciclo while ?> </div> <?php } //Aqui fecha o ciclo while ?> </div> </div> <!--Code for menu ends here--> <a href="galerias.php?sector=<?php echo $linha_sector["galeria_sector_id"]; ?>&categoria=<?php echo $categoria; ?>" class="submenu_sub">-<?php echo $linha_sector["galeria_sector_titulo_pt"]; ?> Agradeço a ajuda. Cumprimentos Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Alano 0 Denunciar post Postado Janeiro 23, 2011 Exemplo que eu mesmo criei, modifique conforme ache necessário: <div id="menu"> <ul id="drop"> <?php $sql = 'SELECT * FROM `menu` AS Menu ORDER BY Menu.`id` ASC'; $resultado = $MySQLi->query($sql) OR trigger_error($MySQLi->error, E_USER_ERROR); while ($menu = $resultado->fetch_object()) { ?> <li><a href="<?php echo $menu->url; ?>"><?php echo utf8_encode($menu->nome); ?></a> <?php $sqlSub = " SELECT * FROM `submenu` AS Sub WHERE Sub.`mId` = '{$menu->id}' ORDER BY Sub.`id` ASC"; $resulSub = $MySQLi->query($sqlSub) OR trigger_error($MySQLi->error, E_USER_ERROR); $nm = $resulSub->num_rows; if ($nm != 0) { ?> <ul> <?php while ($submenu = $resulSub->fetch_object()) { ?> <li><a href="<?php echo "http://".$_SERVER['HTTP_HOST'].'/'; ?><?php echo $submenu->url; ?>"><?php echo utf8_encode($submenu->nome); ?></a></li> <?php } ?> </ul> <?php } $resulSub->free(); ?> <?php } $resultado->free(); ?> </li> </ul> </div> Compartilhar este post Link para o post Compartilhar em outros sites
moonspell 0 Denunciar post Postado Janeiro 23, 2011 Obrigado pelo exemplo no entanto não está fácil adaptar à estrutura acima transcrita. Alguma sugestão mais que me possa resolver o problema? Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Alano 0 Denunciar post Postado Janeiro 24, 2011 Tipo, você pode fazer em uma seguinte estrutura: <ul> <li>Pagina Inicial</li> <li>Categorias</li> <?php if($RESULTADOS > 0) { ?> <ul> <li><?php echo $SUBMENU ?> </ul> <?php } ?> <li>Contato</li> Este é apenas um código lógico, onde você deve inserir funções de verdade. Compartilhar este post Link para o post Compartilhar em outros sites
moonspell 0 Denunciar post Postado Janeiro 24, 2011 Tipo, você pode fazer em uma seguinte estrutura: <ul> <li>Pagina Inicial</li> <li>Categorias</li> <?php if($RESULTADOS > 0) { ?> <ul> <li><?php echo $SUBMENU ?> </ul> <?php } ?> <li>Contato</li> Sim mas só dá o resultado dos sub menus de 1 único menu. Este é apenas um código lógico, onde você deve inserir funções de verdade. Consigo apresentar os sub menus do primeiro bloco de mais nenhum.Reparo no exemplo que dei em cima? Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Alano 0 Denunciar post Postado Janeiro 24, 2011 Se você analisar meu código irá entender, é apenas utilizar o WHILE. Por exemplo: $menu = 2 /* Retorna Categorias */ $submenu = mysql_query(... WHILE 'menuMae' = {$menu}...) Se você se dedicar um pouco consegue... Compartilhar este post Link para o post Compartilhar em outros sites