Ir para conteúdo

Arquivado

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

Biel.

não exibir link em menu que tenha submenu.

Recommended Posts

Boa noite a todos. Pessoal gostaria muito de fazer o seguinte:
não exibir link em menu que tenha submenu.
O menu que tem submenu abaixo é Curso pago e Cursos gratis e aparece um link quando você encosta o cursor.
O certo é ter link no submenu
PHP
Fireworks
Photoshop
e no menu dicas também , isso porque o menu dicas não tem submenu

...

tab_menu
idmm  nome
1     Curso pago
2     Curso gratis
3     dicas

tab_submenu
idss  id_cat   nome	
1	   1	PHP	
2	   2	Fireworks	
3	   2	Photoshop	

tab_conteudo
idcc  id_cat   conteudo
1	  1     curso pago de php
2	  2     curso grátis de Fireworks
3	  2	curso grátis de Photoshop
4	  3	dicas para você 

...

<?php 
$seleciona_categoria = mysql_query("SELECT * FROM tab_menu");
while($linha = mysql_fetch_array($seleciona_categoria)){
$idmm  = $linha['idmm']; 
$nome  = $linha['nome'];
?>

<li> <a href="index.php?idmm=<?php echo $idmm;?>"class="classe" ><?php echo $nome; ?></a>
    
<?php
$seleciona_sub = mysql_query("SELECT * FROM tab_submenu WHERE id_cat = '$idmm' ");
if(mysql_num_rows($seleciona_sub) == 0){
    }
    else{
?>

<ul>

<?php 
while($linha = mysql_fetch_array($seleciona_sub)){
$idss = $linha['idss']; 
$nome = $linha['nome'];
?>

<li><a href="index.php?idss=<?php echo $idss?>"><?php echo $nome?></a></li>

<?php } ?>

</ul> 

<?php } ?>

</li>

<?php } ?>

</ul>

...

Pesquisei na internet e vi este site que não tem link em menu que tem submenu. Agora menu que não tem submenu o link aparece normalmente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Você pode retornar além do menu, sua quantidade de submenus, dessa forma, quando montar o menu, compare a quantidade de submenus, se for maior que 0, então você monta o menu sem link, teste o código abaixo:

<?php 

/* Seleciona menu e quantidades de submenus */

$sql = "
SELECT 
	tm.idmm, tm.nome, COUNT(ts.*) AS qtd_sub  
FROM 
	tab_menu tm 
INNER JOIN 
	tab_submenu ts ON ts.id_cat = tm.idmm 
GROUP BY tm.idmm 
";

$seleciona_categoria = mysql_query($sql);
while($linha = mysql_fetch_array($seleciona_categoria)){
$idmm  = $linha['idmm']; 
$nome  = $linha['nome'];
$qtd_sub = $linha['qtd_sub'];

if ($qtd_sub > 0) 
{
?>

/* Tem submenu, então não cria link */
<li> <?php echo $nome; ?>
    
<?php

} else {
?>

/* Não tem submenu, cria link  */
<li> <a href="index.php?idmm=<?php echo $idmm;?>"class="classe" ><?php echo $nome; ?></a>

<?php
}
$seleciona_sub = mysql_query("SELECT * FROM tab_submenu WHERE id_cat = '$idmm' ");
if(mysql_num_rows($seleciona_sub) == 0){
    }
    else{
?>

<ul>

<?php 
while($linha = mysql_fetch_array($seleciona_sub)){
$idss = $linha['idss']; 
$nome = $linha['nome'];
?>

<li><a href="index.php?idss=<?php echo $idss?>"><?php echo $nome?></a></li>

<?php } ?>

</ul> 

<?php } ?>

</li>

<?php } ?>

</ul>

Compartilhar este post


Link para o post
Compartilhar em outros sites

kcirtapsi, obrigado por postar. Não conseguir fazer.

Aqui você pode ver o menu dinâmico funcionando online.

 

Abaixo temos todo o codigo na integra. o banco de dados é o mesmo.

<style>

*{padding:0;margin:0}

#menu {
	list-style:none;
	width:196px;
	height:auto;
	-webkit-border-radius: 0px;
	border-radius: 0px;
	background:#585858;
	border:0px solid #0F0;
	/*margin-left:30%;*/
	margin-top:10%;
}

#menu li {
	width:168px;
	float:left;
	display:block;
	text-align:left;
	position:relative;
	height:26px; line-height:26px;
	padding: 0px 0px 0px 28px;
	border-bottom:1px dotted #ACACAC;
}

#menu li a {
	font-size:0px; 
	color:#EBEBEB;
	display:block;
	outline:0px;
	text-decoration:none;
	text-shadow: 0px 0px 0px;
}

#menu li:hover {
	background:#6D6D6D;
	border-bottom:1px dotted #ACACAC;
	/* Rounded corners */
	-moz-border-radius: 0px 0px 0px 0px;
	-webkit-border-radius: 0px 0px 0px 0px;
	border-radius: 0px 0px 0px 0px;
}

/*==============================================*/

#menu li .classe {
	display:block;
	width:auto;
	font-size:16px;
	font-weight:normal;
	font-family:Tahoma, Arial, Verdana, "Trebuchet MS"; 
}

#menu li:hover .classe {
	color:#FFF;/* branco */
}

/*==============================================*/

#menu li ul li {
	padding: 4px 0px 4px 4px;
	text-align:left;
	width:144px;
	border-bottom:1px dotted #ACACAC;
}

#menu li ul li:hover {
	border:none;
	padding: 4px 0px 4px 4px;
	background-color:transparent;
	border-bottom:1px dotted #ACACAC;
}

#menu li:hover div a {
	font-size:14px;
	color:#EBEBEB;
	font-family:Tahoma, Arial, Verdana, "Trebuchet MS";
}

#menu li:hover div a:hover {
	color:#F90; /*laranja */
}
		
.classe-3{
	width:144px;
	background:#6D6D6D;
	float:left;
	position:absolute;
	left:-999em; /* Hides the drop down */
	text-align:left;
	padding:0px 14px 0px 14px;
	border-right:0px solid #F00;
	border-bottom:0px solid #F00;
	/* Rounded Corners */
	-moz-border-radius: 0px 10px 10px 0px;
	-webkit-border-radius: 0px 10px 10px 0px;
	border-radius: 0px 10px 10px 0px;
}

#menu li:hover .classe-3{
	left:196px;
	top:0px;
	right:auto;
}

.cabecalho9 {color:#F5F5F5; font-size:16px; font-weight:bold; text-align:left; } 

#menu_neutro_01{ width:190px; height:20px; clear:both; background:#585858;}
</style>

<!--=============================================================-->
                
<ul id="menu">
<?php 
$seleciona_categoria = mysql_query("SELECT * FROM tab_menu")or die (mysql_error());
while($linha = mysql_fetch_array($seleciona_categoria)){
$idmm  = $linha['idmm']; 
$nome  = $linha['nome'];
?>

<li> <a href="index.php?idmm=<?php echo $idmm;?>"class="classe" ><?php echo $nome; ?></a>
 
<div class="classe-3">
<ul>
<?php
$seleciona_sub = mysql_query("SELECT * FROM tab_submenu WHERE id_cat = '$idmm' ")or die (mysql_error());
while($linha = mysql_fetch_array($seleciona_sub)){
$idss = $linha['idss'];
$nome = $linha['nome'];
if(mysql_num_rows($seleciona_sub) == 0){
    }
    else{
?>

<li><a href="index.php?idss=<?php echo $idss?>"><?php echo $nome?></a></li>

<?php } } ?>

</ul> 
</div>
</li>

<?php } ?>

<div id="menu_neutro_01"></div>
</ul> 

<!--========================================================================-->
<br>
<hr>
<?php

  $get1= $_GET['idss'];
  $get2= $_GET['idmm'];

$sql = mysql_query("SELECT * FROM tab_conteudo WHERE 
				   idcc = '".$get1."' OR 
				   id_cat = '".$get2."'  
				   ")or die (msql_error());

while($linha = mysql_fetch_array($sql)){
$conteudo  = $linha['conteudo'];	

?>

<?php echo $conteudo;?><br />

<?php }  ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites
kcirtapsi, entendi sim. Veja:
Tem um pequeno detalhe muito importante O menu dicas não tem submenu. Gostaria que aparecesse o link no menu dicas.
O certo é ter link no submenu

PHP
Fireworks
Photoshop

e no menu dicas também , isso porque o menu dicas não tem submenu

 

Veja aqui como ficou o menu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então o que você pode fazer é:

 

No caso dos MENUS, executar a query SQL que te mandei, e montar um array com menus e quantidade de sub.

No caso de submenus, você faz a mesma coisa, executa outra query SQL, verificando se cada submenu possui outro submenu como filho, mesmo conceito da query SQL de cima, e guarde isso em outro array:

 

Na hora que você for montar link de menu, você consulta o primeiro array:

Ex:

supondo que o array seja: $menus = array('1' => 1) // indice é o id do menu e menu e quantidade de submenu filho

if ( $menus[$id_do_menu] > 0)
{

//possui link

} else {

// não possui

}

 

 

espero ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

kcirtapsi, obrigado por ter me ajudado bastante.

Para um iniciante em php que é o meu caso, entender o que você digitou no ultimo post é mais dificil que um exemplo prático. Se você fizesse um breve exemplo prático baseado nas duas tabelas abaixo, eu entenderia rapidamente a ideia e resolveria a questão do menu. Obrigado!

 

...

tab_menu
idmm  nome
1     Curso pago
2     Curso gratis
3     dicas

tab_submenu
idss  id_cat   nome	
1	   1	PHP	
2	   2	Fireworks	
3	   2	Photoshop	

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.