Jump to content


Photo

Ocultar Itens Do Menu


  • Faça o login para participar
1 reply to this topic

#1 claytonprog

claytonprog

    Turista

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

Posted 22/08/2012, 21:48

Pessoal!

É o seguinte:

tenho um menu dinâmico com 4 níveis gostaria que ocultasse o <li> para que o menu não apareça caso não haja no banco o item correspondente.

segue o código


<link type="text/css" href="menu.css" rel="Stylesheet" />


<div id="nav">


<ul>

<li><a href="#">Selecione a Categoria</a>
	
    <!-- Categoria 1º nível ---->
   
    <ul>  
    <?php
			
	include "../connections/conexao.php";					
					
	$SQL = "SELECT * FROM categorias ORDER BY categoria asc limit 80";
	$query = mysql_query($SQL);
					
	while($row = mysql_fetch_array($query)) {
					
	$categoria = $row['categoria'];
	$id = $row['id'];
					
	?>
		
	    <li><a href="#"><? echo $categoria; ?></a>        
         
          <!-- Início Sub-Categoria 2º nível ---->

		<ul>
        
         <?php
					
		 $SQL9 = "SELECT * FROM sub_categorias where id_categoria='$id' ORDER BY subcategoria asc";
		 $query9 = mysql_query($SQL9);
					
		 while($row9 = mysql_fetch_array($query9)) {
					
		 $sub_categoria = $row9['subcategoria'];
		 $id_sub_categoria = $row9['id'];			 
			
					
		?>
        
                      
		<li><a href="#"><? echo $sub_categoria; ?></a>
        
               <!-- Início dos Itens 3º nível ---->
               
                <ul>
                
                 <?php				 
									
				 $SQL8 = "SELECT * FROM sub_sub_categorias where id_sub_categoria='$id_sub_categoria' ORDER BY sub_sub_categoria asc";
				 $query8 = mysql_query($SQL8);
							
				 while($row8 = mysql_fetch_array($query8)) {
							
				 $sub_sub_categoria = $row8['sub_sub_categoria'];
				 $id_sub_sub_categoria = $row8['id'];					
							
				?>
						
                    <li><a href="#"><? echo $sub_sub_categoria; ?></a>
                    
                     <!-- Início do Sub-Itens 4º nível ---->
                    
                     <ul>
                     
                      <?php				 
									
					 $SQL7 = "SELECT * FROM sub_itens where id_sub_sub_categoria='$id_sub_sub_categoria' ORDER BY sub_item asc";
					 $query7 = mysql_query($SQL7);
								
					 while($row7 = mysql_fetch_array($query7)) {
								
					 $sub_item = $row7['sub_item'];
					 $id_sub_sub_categoria = $row7['id'];					
								
					?>
                     
                      <li><a href="#"><? echo $sub_item; ?></a></li>
                    
                    <?
				    }
				    ?>
                      
                    </ul>  
                    
                     <!-- Final do Sub-Itens 4º nível ---->              
                    
                    
                    </li>
                
                 <?
				 }
				?>	
                
                </ul>
                
                <!-- Final dos Itens 3º nível ---->
               
        
        </li>
        
        
        <?
		 }
		?>	
		</ul>
        
        	
         <!-- Final Sub-Categoria 2º nível ---->
        
       <?
	    }
		?>
	</li>
	
	</ul>
    
         <!-- Final Categoria 1º nível ---->
 
</li>

</ul>


</div>



O css:


#nav {
    	float: left;
		width:auto;
     	font: bold 12px Arial, Helvetica, Sans-serif;
    	border: 1px solid #121314;
    	border-top: 1px solid #2b2e30;
    	-webkit-border-radius: 5px;
    	-moz-border-radius: 5px;
    	border-radius: 5px;
    	overflow: hidden;
}

#nav ul {
width:auto;
	margin:0;
	padding:0;
	list-style:none;
}

#nav ul li {
	float:left;
}

#nav ul li a {
   	float: left;
	color:#d4d4d4;
    	padding: 10px 20px;
	text-decoration:none;
    	background:#3C4042;
 	background: -webkit-gradient( linear, left bottom, left top, color-stop(0.09, rgb(59,63,65)), color-stop(0.55, rgb(72,76,77)), color-stop(0.78, rgb(75,77,77)) );
	background: -moz-linear-gradient( center bottom, rgb(59,63,65) 9%, rgb(72,76,77) 55%, rgb(75,77,77) 78% );
	background: -o-linear-gradient( center bottom, rgb(59,63,65) 9%, rgb(72,76,77) 55%, rgb(75,77,77) 78% );
	box-shadow: 0 1px 0 rgba(255, 255, 255, 0.1) inset, 0 0 5px rgba(0, 0, 0, 0.1) inset;
	border-left: 1px solid rgba(255, 255, 255, 0.05);
        border-right: 1px solid rgba(0,0,0,0.2);
 	text-shadow: 0 -1px 1px rgba(0, 0, 0, 0.6);
}

#nav ul li a:hover,
#nav ul li:hover > a {
    	color: #252525;
    	background:#3C4042;
	background: -webkit-gradient( linear, left bottom, left top, color-stop(0.09, rgb(77,79,79)), color-stop(0.55, rgb(67,70,71)), color-stop(0.78, rgb(69,70,71)) );
	background: -moz-linear-gradient( center bottom, rgb(77,79,79) 9%, rgb(67,70,71) 55%, rgb(69,70,71) 78% );
	background: -o-linear-gradient( center bottom, rgb(77,79,79) 9%, rgb(67,70,71) 55%, rgb(69,70,71) 78% );
    	text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2), 0 -1px #000;

}

#nav li ul a:hover, 
#nav ul li li:hover > a  {
    color: #2c2c2c;
  	background: #5C9ACD;
	background: -webkit-gradient( linear, left bottom, left top, color-stop(0.17, rgb(61,111,177)), color-stop(0.51, rgb(80,136,199)), color-stop(1, rgb(92,154,205)) );
	background: -moz-linear-gradient( center bottom, rgb(61,111,177) 17%, rgb(80,136,199) 51%, rgb(92,154,205) 100% );
	background: -o-linear-gradient( center bottom, rgb(61,111,177) 17%, rgb(80,136,199) 51%, rgb(92,154,205) 100% );
    	border-bottom: 1px solid rgba(0,0,0,0.6);
    	border-top: 1px solid #7BAED9;
    	text-shadow: 0 1px rgba(255, 255, 255, 0.3);
}



#nav li ul {
    	background:#3C4042;
    	background-image: -webkit-gradient( linear, left bottom, left top, color-stop(0.09, rgb(77,79,79)), color-stop(0.55, rgb(67,70,71)), color-stop(0.78, rgb(69,70,71)) );
    	background-image: -moz-linear-gradient( center bottom, rgb(77,79,79) 9%, rgb(67,70,71) 55%, rgb(69,70,71) 78% );
    	background-image: -o-linear-gradient( center bottom, rgb(77,79,79) 9%, rgb(67,70,71) 55%, rgb(69,70,71) 78% );
    	border-radius: 0 0 10px 10px;
    	-moz-border-radius: 0 0 10px 10px;
    	-webkit-border-radius: 0 0 10px 10px;
    	left: -999em;
    	margin: 35px 0 0;
    	position: absolute;
    	width: 160px;
    	z-index: 9999;
    	box-shadow: 0 0 15px rgba(0, 0, 0, 0.4) inset; 
    	-moz-box-shadow: 0 0 15px rgba(0, 0, 0, 0.4) inset; 
    	-webkit-box-shadow: 0 0 15px rgba(0, 0, 0, 0.4) inset; 
    	border: 1px solid rgba(0, 0, 0, 0.5);
}

#nav li:hover ul {
    	left: auto;
}

#nav li ul a {
    	background: none;
    	border: 0 none;
    	margin-right: 0;
    	width: 120px;
    	box-shadow: none;
    	-moz-box-shadow: none;
    	-webkit-box-shadow: none;
    	border-bottom: 1px solid transparent;
    	border-top: 1px solid transparent;
}

#nav li li ul {
    	margin: -1px 0 0 160px;
    	-webkit-border-radius: 0 10px 10px 10px;
    	-moz-border-radius: 0 10px 10px 10px;
    	border-radius: 0 10px 10px 10px;
    	visibility:hidden;
}

#nav li li:hover ul {
    	visibility:visible;
}

#nav ul ul li:last-child > a {
	-moz-border-radius:0 0 10px 10px;
	-webkit-border-radius:0 0 10px 10px;
	border-radius:0 0 10px 10px;
}

#nav ul ul ul li:first-child > a {
	-moz-border-radius:0 10px 0 0;
	-webkit-border-radius:0 10px 0 0;
	border-radius:0 10px 0 0;
}


Pessoal!

Para facilitar dei um printscreen na tela dá uma olhada que vc vai entender.



Clique aqui

#2 Squall Robert

Squall Robert

    Mr. Squall - Mais Carne do que Osso (hihi)

  • Usuários
  • 507 posts
  • Sexo:Masculino
  • Localidade:Curitiba
  • Interesses:Php ... Php...Php

Posted 24/08/2012, 11:49

veio ... ta tudo errado isso ai...

você esta fazendo várias consultas para niveis do meu, em uma estrutura grande isso vai dicar muito pesado.

com uma consulta você resolve isso ..

e fazendo uma chamada recursiva você monta o menu...


segue um exemplo de chamada recursiva...

public function DesenharArvore( $arvore, $tipo = null, &$html = "")
	{


		if(is_array($arvore) && count($arvore) > 0)
		{

			foreach($arvore as $itemMenu)
			{
			    //print_r($itemMenu);
				$nome 		= $itemMenu['nome'];
				$acao 		= $itemMenu['acao'];
				$modulo 	= $itemMenu['modulo'];
				$index 		= $itemMenu['index'];
				$target 	= $itemMenu['target'];
                $pai = $itemMenu['id_pai'];

				// Verifica se item � um menu pai
				if( count($itemMenu['filhos']) )
				{
                    $html .= "<li><a href='#' >$nome</a>\n";
                    $html .= "  <ul>\n";
                        	$this->DesenharArvore($itemMenu['filhos'], 1, $html);
                    $html .= "  </ul>\n";
                    $html .= "</li>\n";
				}
				else
				{
                    $html .= "  <li><a href='$index?app_modulo=$modulo&app_comando=$acao&app_codigo=' target='$target'>$nome</a></li>\n";
				}
			}
		}
        return $html;
	}


perceba que dentro da função ela se chama novamente.
com isso você tem subniveis ilimitados.
<?php

$squall = new Squall();

$squall->Ajudando("você");

$resultado = $squall->solucao();  ?>




1 user(s) are reading this topic

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

IPB Skin By Virteq