Jump to content


giselelm

Member Since 22/03/2006
Offline Last Active 26/09/2014, 06:58
-----

#929118 Menu Sanfona Com Php

Posted by giselelm on 04/08/2008, 19:15

Boa Noite, peguei o exemplo abaixo no forum:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt" lang="pt">
<head>
<title>Accordion menu (menu sanfona)</title>
&lt;script type="text/javascript" src="menu.js"></script>
</head>
<body>
<div id="menu">
<div onclick="abrir_menu('submenu1')"><a href="#">Menu 1</a></div>
<span id="submenu1" class="submenu">
<a href="#">Opção A - menu 1</a><br />
<a href="#">Opção B - menu 1</a><br />
</span>
<div onclick="abrir_menu('submenu2')"><a href="#">Menu 2</a></div>
<span id="submenu2" class="submenu">
<a href="#">Opção A - menu 2</a><br />
<a href="#">Opção B - menu 2</a><br />
</span>
<div onclick="abrir_menu('submenu3')"><a href="#">Menu 3</a></div>
<span id="submenu3" class="submenu">
<a href="#">Opção A - menu 3</a><br />
<a href="#">Opção B - menu 3</a>
</span>
</div>
</body>
</html>

ele funciona perfeitamente, então tentei adaptar ao php para ele puxar as categorias e subcategorias que tenho no banco de dados.

Ele puxa apenas a primeira subcategoria e inclui logoabaixo da primeira categoria... ou seja, ele não faz o loop trazendo todas as sub qndo eu clico na categoria e muito menos coloca 'abaixo' da correta...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt" lang="pt">
<head>
<title>Accordion menu (menu sanfona)</title>
&lt;script type="text/javascript" src="menu.js"></script>
</head>
<body>
<?
$host='localhost';
	$user='root';
	$passwd='';
	$conne_db = mysql_connect($host,$user,$passwd) or die('Erro ao conectar.'.mysql_error());
	$select_db = mysql_select_db('portatrabalhista',$conne_db) or die('Erro ao selecionar banco de dados.'.mysql_error());
$sql_menu = 'SELECT * FROM materias_categoria';
	$query_menu = mysql_query($sql_menu,$conne_db) or die('Não foi possível realizar a consulta'.mysql_error());
	for($i=0;$i<mysql_num_rows($query_menu);$i++)
		{
		$menu = mysql_fetch_array($query_menu);
		echo "<div id='menu'>";
		echo "<div onclick=\"abrir_menu('submenu1')\"><a href='#'>'.$menu[1].'</a></div>";

		$sql_sub='SELECT * FROM materias_sub WHERE materia_categoria="'.$menu[0].'"';
		$query_sub = mysql_query($sql_sub) or die('Erro ao consultar submenus.'.mysql_error());
		
		
			for($x=0;$x<mysql_num_rows($query_sub);$x++)
			{
			$submenu = mysql_fetch_array($query_sub);
			echo "<span id='submenu1' class='submenu'><a href='#'>$submenu[1]</a><br></span>";
			}
		echo '</div>';
		}
?>
</body>
</html>

arquivo menu.js
var persistmenu = "sim";
var persisttype = "site";

if(document.getElementById) {
	document.write('<style type="text/css">')
	document.write('.submenu{display: none;}')
	document.write('</style>')
}

function abrir_menu(obj) {
	if(document.getElementById) {
		var el = document.getElementById(obj);
		var ar = document.getElementById("menu").getElementsByTagName("span");
		if(el.style.display != "block") {
			for(var i=0; i<ar.length; i++) {
				if(ar[ i ].className=="submenu") {
					ar[ i ].style.display = "none";
				}
			}
			el.style.display = "block";
		}
		else {
			el.style.display = "none";
		}
	}
}

function get_cookie(Name) {
	var search = Name + "="
	var returnvalue = "";
	if(document.cookie.length > 0) {
		offset = document.cookie.indexOf(search)
		if(offset != -1) {
			offset += search.length
			end = document.cookie.indexOf(";", offset);
			if(end == -1) end = document.cookie.length;
			returnvalue = unescape(document.cookie.substring(offset, end))
		}
	}
	return returnvalue;
}

function onloadfunction() {
	if(persistmenu=="sim") {
		var cookiename = (persisttype=="site")? "abrir_menu" : window.location.pathname
		var cookievalue = get_cookie(cookiename)

		if(cookievalue!="") {
			document.getElementById(cookievalue).style.display="block"
		}
	}
}

function savemenustate() {
	var inc=1, blockid=""
	while(document.getElementById("submenu"+inc)) {
		if(document.getElementById("submenu"+inc).style.display=="block") {
			blockid="submenu"+inc
			break
		}
	inc++
	}
	var cookiename = (persisttype=="site")? "abrir_menu" : window.location.pathname
	var cookievalue = (persisttype=="site")? blockid+";path=/" : blockid
	document.cookie = cookiename+"="+cookievalue
}

if(window.addEventListener) {
	window.addEventListener("load", onloadfunction, false)
}
else if(window.attachEvent) {
	window.attachEvent("onload", onloadfunction)
}
else if(document.getElementById) {
	window.onload = onloadfunction
}

if(persistmenu=="sim" && document.getElementById) {
	window.onunload = savemenustate
}



IPB Skin By Virteq