Ir para conteúdo

POWERED BY:

Arquivado

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

Filipe Martins

while dentro de outro - while com submenus

Recommended Posts

Oi gente...

 

Seguinte, tenho 2 tabelas - CATEGORIAS e SUBCATEGORIAS. A subcategorias tem o campo chamado 'cod_cat' que faz referencia ao COD da categorias.

 

e com um css faço declaro que quando passar o mouse em um menu surgirão os submenus... (ul, li, class, etc.)

 

 

Porém só está aparecendo os submenus do 1º menu, o restante não.. vejam meu código...

 

 

PUXANDO O BANCO DE DADOS:

<?php

mysql_select_db($database_connDB, $connDB);

$query_rsCategorias = "SELECT * FROM categorias ORDER BY nome ASC";

$rsCategorias = mysql_query($query_rsCategorias, $connDB) or die(mysql_error());

$row_rsCategorias = mysql_fetch_assoc($rsCategorias);

$totalRows_rsCategorias = mysql_num_rows($rsCategorias);

$cod = $row_rsCategorias['cod'];

 

mysql_select_db($database_connDB, $connDB);

$query_rsSubCategorias = "SELECT * FROM categorias_sub WHERE cod_cat='$cod' ORDER BY nome ASC";

$rsSubCategorias = mysql_query($query_rsSubCategorias, $connDB) or die(mysql_error());

$row_rsSubCategorias = mysql_fetch_assoc($rsSubCategorias);

$totalRows_rsSubCategorias = mysql_num_rows($rsSubCategorias);

 

?>

 

 

 

NO BODY:

 

<ul id="barra" class="menubar">

<?php do { ?>

<li class="menuvertical"><a href="#"><?php echo $row_rsCategorias['nome']; ?></a>

 

<?php

 

echo "<ul id=\"nav\" class=\"menu\">";

while ($row_rsSubCategorias = mysql_fetch_assoc($rsSubCategorias))

{

$nome = $row_rsSubCategorias['nome'];

$cod = $row_rsSubCategorias['cod'];

echo "<li><a href=\"classifica.php?subcategoria=$cod\" target=\"conteudo\">$nome</a></li>";

}

echo "</ul>";

?>

</li>

<?php } while ($row_rsCategorias = mysql_fetch_assoc($rsCategorias)); ?>

 

</ul>

 

 

 

 

e quando a pagina está impressa, olhando pelo codigo fonte vejo que o erro está na parte em que encerra um MENU (</li>) e começa outro <li>, acontece o seguinte: ele parece estar repetindo o while de dentro o número de vezes que acontece o while de fora, mais ou menos isso... valeu..

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php

$menu= mysql_query("SELECT tbcategorias.cod_categoria, tbcategorias.nomecategoria, tbsubcategorias.cod_subcategoria, tbsubcategorias.cod_categoria as codsub, tbsubcategorias.nomesubcategoria FROM (tbcategorias INNER JOIN tbsubcategorias ON tbcategorias.cod_categoria = tbsubcategorias.cod_categoria) ORDER BY tbcategorias.cod_categoria ASC, tbsubcategorias.nomesubcategoria")or die ("Erro: ".mysql_error());

//ai tu lista assim

$cat = "";

?>

<table width="100%" border="0" cellpadding="0" cellspacing="0">

<tr><?php

while($linha=mysql_fetch_array($menu)){

if ($cat <> $linha["cod_categoria"]) { ?>

<td bgcolor="#999999"> <a href="categoria.php?cod_categoria=<?php echo $linha['cod_categoria']; ?>"><?php echo $linha["nomecategoria"]; ?></a></td>

<?php $cat = $linha["codsub"]; ?>

</tr>

<?php } ?>

<tr>

<td bgcolor="#CCCCCC">  -<a href="subcategoria.php?cod_subcategoria=<?php echo $linha['cod_subcategoria']; ?>"><?php echo $linha['nomesubcategoria']; ?></a></td>

</tr>

<?php } ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, amigo.

 

Eu resolvi meu problema (pelo menos por enquanto) dessa maneira.

 

Usei somente uma tabela, como segue abaixo:

 

CREATE TABLE IF NOT EXISTS `tbl_categorias` (
  `cat_codigo` bigint(20) NOT NULL auto_increment,
  `cat_idpai` int(11) default '0',
  `categoria` varchar(240) default '',
  PRIMARY KEY  (`cat_codigo`)
) ENGINE=InnoDB DEFAULT CHARSET=UTF8

E o meu código ficou desse jeito:

 

<script>
function mostraSub(det) {

	if(document.getElementById(det).style.display == 'none'){
		document.getElementById(det).style.display = 'inline';
	}
	else{
		document.getElementById(det).style.display = 'none';
		
	}
}
</script>
<?
$cati = mysql_query("SELECT * FROM tbl_categorias WHERE cat_idpai = 0 ORDER BY categoria");

while ($cate = mysql_fetch_array($cati)){
?>
<img src="images\bullet.gif" border="0" align="absmiddle" /> <a href="java script://" onclick="mostraSub('sub<?= $cate['cat_codigo']; ?>')"><strong><?= $cate['categoria']; ?></strong></a><br>
<?
$subcat = mysql_query("SELECT * FROM tbl_categorias WHERE cat_idpai = $cate[cat_codigo] AND cat_idpai <> 0");

if($_GET['dis'] == $cate['cat_codigo']){
	$display = "inline";
}else{
	$display = "none";
}

?>
<div style="display: <?= $display; ?>" id="sub<?= $cate['cat_codigo']; ?>">
<?
while($sct = mysql_fetch_array($subcat)){

if($_GET['cd'] == $sct['cat_codigo']){
	$corT = "#990000";
	$bolDa = "<strong>";
	$bolDf = "</strong>";
}else{
	$corT = "#000000";
	$bolDa = "";
	$bolDf = "";
}
?>

   <font size="1"> <a href="index.php?pg=lst_categoria&dis=<?= $sct['cat_idpai']; ?>&cd=<?= $sct['cat_codigo']; ?>"><font color="<?= $corT; ?>"><?= $bolDa; ?><?= $sct['categoria']; ?><?= $bolDf; ?></font></a></font><br />
<?
}
?>
<hr size="1" color="#999999" />
</div>
<?
}
?>

Dá uma lida. Se não entender, é só perguntar.

 

Abraços

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.