← Tutoriais

Ajuda com menu dinâmico (PHP+MySQL)

Lida 10565 vezes

Offline

espaconline 
Elite
Mensagens 1066 Gostos 10
Feedback +10

Troféus totais: 31
Trófeus: (Ver todos)
Windows User Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2

Boas pessoal,

Estou a tentar construir um menu dinâmico com PHP+MySQL mas estou com um pequeno problema.

O menu original encontra-se aqui:
http://www.dynamicdrive.com/style/csslibrary/item/suckertree-menu-vertical/

Query
Código: [Seleccione]
mysql_select_db($database_ligacao, $ligacao);
$query_rsMenu = "SELECT produtos_categorias.titulo AS titulo, produtos_categorias.id, produtos_subcategoria.cat_id, produtos_subcategoria.id AS subcatid, produtos_subcategoria.titulo as nome FROM produtos_categorias INNER JOIN produtos_subcategoria on produtos_categorias.id = produtos_subcategoria.cat_id GROUP BY produtos_subcategoria.cat_id";
$rsMenu = mysql_query($query_rsMenu, $ligacao) or die(mysql_error());
$row_rsMenu = mysql_fetch_assoc($rsMenu);
$totalRows_rsMenu = mysql_num_rows($rsMenu);

Menu
Código: [Seleccione]
<div class="suckerdiv">
<ul id="suckertree1">
   <?php do { ?>
    <li><a class="subfolderstyle" href="#"><?php echo $row_rsMenu['titulo']; ?></a>
      <ul style="left: 203px; visibility: visible; display: none;">
        <li><a href="produtos_ver.php?c=<?php echo $row_rsMenu['id']; ?>&sc=<?php echo $row_rsMenu['subcatid']; ?>"><?php echo $row_rsMenu['nome']; ?></a></li>
      </ul>
    </li>
    <?php } while ($row_rsMenu mysql_fetch_assoc($rsMenu)); ?>
</ul>
</div>

Problema
Tenho as Categorias: A, B e C
As Sub-Categorias: 1,2,3 = A | 4,5,6 = B | 7,8,9 = C

Ao passar o rato pela categoria A devia aparecer as sub-categorias 1,2 e 3, no entanto só me aparece a sub-categoria 1.

Desde já agradeço quem me possa ajudar.
Offline

narg 
Membro
Mensagens 265 Gostos 0
Feedback +2

Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 100 Posts

Viva não estou a ver a estrutura da BD, mas para te aparecerem todas as subcategorias têns de fazer 2 ciclos
Código: [Seleccione]
<?php
// Query que retira todas as categorias
$sql "SELECT * FROM categorias";
//ciclo que vai correr todas as categorias
while ($categorias) {
    
//Mostra categoria
    
echo "<li>$categoria[titulo]</li>"
    
//query qye vai correr todas as subcategorias correspondentes à categoria $categoria[id]
    
$sql "SELECT * FROM produtos_subcategoria WHERE id = {$categoria[id]}";
    
$subcategorias executar_query($sql);
    
//Cao existam subcategorias insere o <ul> e corre o ciclo das mesmas
    
if ($subcategorias) {
        echo 
"<ul>"
        
while ($subcategorias) {
           echo 
"<li>$subcategoria[titulo]</li>"
        
}
        echo 
"</ul>"
    
}
}
?>


Isto é um exemplo rápido do que é necessário. Pois para te listar as subcategorias tens de fazer um ciclo sobre elas.

PS. isto é um exemplo rapido como disse n é funcional. pois n está a correr o array da query.