Menus Dinâmicos
Este tutorial é um exemplo simples de criação de menus dinâmicos usando bases de dados MySQL.
Base de Dados
A Estrutura da Base de Dados deverá ser a seguinte:
CREATE TABLE `md_menuscategorias` (
`ID` tinyint(4) NOT NULL auto_increment,
`nome` varchar(20) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `ID` (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE `md_menuslinks` (
`ID` tinyint(4) NOT NULL auto_increment,
`ID_CATEGORIA` tinyint(4) NOT NULL,
`nome` varchar(30) NOT NULL,
`url` varchar(100) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `ID` (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Código
<?php
//Iniciamos a conexão à Base de Dados.
//As configurações costumam ser estas, mas aconselho-o a revêr as configurações.
//Um carácter mal colocado é muitas vezes origem de erros.
mysql_connect("localhost", "root", "") or
//Ou se der erro, emitimos uma mensagem de erro
die("Não foi possível conectar à base de dados: " . mysql_error());
//Seleccionamos a base de dados. Pode alterar o nome para a sua base de dados.
mysql_select_db("base_de_dados");
//Executamos uma query à base de dados, em que seleccionamos os menus de links que estão na base de dados.
$query = mysql_query("SELECT ID, nome FROM md_menuscategorias");
//Aqui iniciamos um ciclo que irá mostrar os menus.
while ($row = mysql_fetch_array($query, MYSQL_ASSOC)) {
//Fazemos uma query à base de dados para obter os links do actual menu
$links = mysql_query("SELECT ID, nome, url FROM md_menuslinks WHERE ID_CATEGORIA = ".$row["ID"]."");
//Verificamos se o menu tem algum link. Se sim, mostra-mo-lo, se não, nem o menu se mostra. Não vale a pena.
if (mysql_num_rows($links) > 0){
//Mostramos a categoria.
echo "<h2 id="menu_".$row["ID"]."">".$row["nome"]."</h2>";
//Inicia-mos a lista de categorias.
echo "<ul>";
//Criamos um ciclo para imprimir as hiperligações.
while ($link = mysql_fetch_array($links, MYSQL_ASSOC)){
//Mostra-mos a hiperligação
echo "<li><a href="".$link["url"]."" id="link_".$link["ID"]."">".$link["nome"]."</a></li>";
}
//Fecha-se a lista HTML
echo "</ul>";
}
}
?>