Ferramentas de Utilizador

Ferramentas de Site


dev_web:php:snippet:menus_dinamicos

Tutorial: 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>";
		}
	}
 
?>
dev_web/php/snippet/menus_dinamicos.txt · Esta página foi modificada pela última vez em: 2018/05/14 21:37 (Edição externa)