Jump to content


Photo

Menu Sanfona Com Php


  • Faça o login para participar
9 replies to this topic

#1 giselelm

giselelm

    12 Horas

  • Usuários
  • 173 posts
  • Sexo:Feminino
  • Localidade:Curitiba

Posted 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
}

Edição feita por: giselelm, 12/08/2008, 12:32.


#2 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 05/08/2008, 09:06

As suas DIVS tem o mesmo nome. Veja:
<span id='submenu1' class='submenu'><a href='#'>$submenu[1]
Você tem que dar nomes diferentes...

#3 giselelm

giselelm

    12 Horas

  • Usuários
  • 173 posts
  • Sexo:Feminino
  • Localidade:Curitiba

Posted 05/08/2008, 10:47

valeu pela dica boirock, eu até já pensei e tentei algo como

onclick=\"abrir_menu('submenu[]')\
...
echo "<span id='submenu[]'>

mas não funcionou... como posso fazer?

#4 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 05/08/2008, 11:46

id='menu$i'

#5 giselelm

giselelm

    12 Horas

  • Usuários
  • 173 posts
  • Sexo:Feminino
  • Localidade:Curitiba

Posted 05/08/2008, 20:17

vlw boirock, agora ele abre embaixo da categoria correta, só tem uma situação, ele so puxa a primeira subcategoria, não está fazendo o loop...

echo "<div onclick=\"abrir_menu('submenu[$i]')\<a href='#'>'.$menu[1].'</a></div>";
echo "<span id='submenu[$i]' class='submenu'><a href='#'>$submenu[1]</a><br></span>";

Edição feita por: giselelm, 05/08/2008, 20:29.


#6 giselelm

giselelm

    12 Horas

  • Usuários
  • 173 posts
  • Sexo:Feminino
  • Localidade:Curitiba

Posted 12/08/2008, 09:38

Não consigo 'gerar' o loop, ele apresenta apenas a primeira subcategoria.
Onde estou errando?

#7 mestrexim

mestrexim

    Novato no fórum

  • Usuários
  • 16 posts
  • Sexo:Não informado

Posted 13/08/2008, 12:19

tenta usr o while...
for($x=0;$x<mysql_num_rows($query_sub);$x++)
			{
			while($submenu = mysql_fetch_array($query_sub)){
			 
			echo "<span id='submenu1' class='submenu'><a href='#'>$submenu[1]</a><br></span>";
			}
}
		echo '</div>';


#8 giselelm

giselelm

    12 Horas

  • Usuários
  • 173 posts
  • Sexo:Feminino
  • Localidade:Curitiba

Posted 15/08/2008, 12:42

Oi Mestrexim

até fiz o while como indicou, mas ele continua trazendo aenas a primeria subcategoria...

#9 HaroNism

HaroNism

    Super Veterano

  • Usuários
  • 15385 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 20/10/2017, 15:07

Can I Buy Doxycycline Over The Counter online pharmacy Teladifil Canada Buy Viagra Online Auf Rechnung Cialis Effet Avis
Online Tadacip buy accutane ireland levitra cheapest price Zithromax 3 Day Vs 5 Day Cost Propecia

#10 Miguceamma

Miguceamma

    MiguPenjisse

  • Usuários
  • 13201 posts

Posted 20/10/2017, 16:57

Keflex Acid Reflux Tadalafil Like Fast Can I Order Celebrex From Canada levitra prices 20 gm free delivery Kamagra Dosis Diaria




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq