Ir para conteúdo
Fórum Script Brasil
  • 0

Página Com Menu Dinâmico


mariozinho_de

Pergunta

Menu Dinâmico com PHP e MySQL

Ola galera, como eu não vi nenhum menu dinamico por aqui. segue esse que eu tava desenvolvendo, fiz o mais simples possivel pra galera que de nivel básico também poder usar o código.

Duvidas, poste ai que eu respondo.

1. Crie a tabela

--

-- Estrutura da tabela `paginas`

--

CREATE TABLE `paginas` (

`codigo` int(11) NOT NULL auto_increment,

`menu` varchar(100) NOT NULL default '',

`texto` text NOT NULL,

`submenu` int(11) NOT NULL default '0',

`ordem` int(11) NOT NULL default '0',

`titulo` varchar(100) NOT NULL default '',

`id_menu` int(11) NOT NULL default '0',

PRIMARY KEY (`codigo`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

2. Insira os dados

INSERT INTO `paginas` VALUES (1, 'menu1', 'menu1 menu1 menu1 menu1 menu1', 0, 1, 'menu1', 0);

INSERT INTO `paginas` VALUES (2, 'menu2', 'menu2 menu2 menu2 menu2 menu2', 1, 2, 'menu2', 0);

INSERT INTO `paginas` VALUES (3, 'sub1', 'sub1sub1sub1sub1sub1', 0, 1, 'sub1', 2);

INSERT INTO `paginas` VALUES (4, 'sub2', 'sub2 sub2 sub2 sub2sub2', 0, 1, 'sub2', 2);

3. Explicado cada coluna

codigo - codigo da pagina

menu - e nome que vai aparecer no menu

texto - e o conteudo da pagina

submenu - é pra dizer se o link vai ter ou não submenu (se tiver é 1 se não é 0)

ordem - ordenar os links

titulo - é titulo da pagina (nem precisava disso na real)

id_menu - coloca-se o cdigo do menu que os submenu possuem

4. Conectando a base de dados

<?php
function conecta () {
$host = "localhost";
$senha = "";
$login = "root";
$banco = "final";
$conexao = mysql_connect($host,$login,$senha) or die(mysql_error());
mysql_select_db($banco,$conexao);
}

function desconecta (){
    mysql_close();
}
?>
5. Cria o arquivo (index.php) onde a gente vai se chamar tudo que é página.
<?php
    session_start();
    include("includes/f_banco.php");
    conecta ();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<table width="100%" border="1" cellpadding="0" cellspacing="5" bordercolor="#999999">
  <tr>
    <td colspan="2"><?=$titulo?></td>
  </tr>
  <tr>
    <td width="22%"><?php
    
    include('menu.php');
    
    ?>
    </td>
    <td width="78%">
    <?php
    if(isset($_REQUEST['id_pagina']))
    {
    $id_pagina = $_REQUEST['id_pagina'];
    $sqli = "SELECT * FROM paginas";
    
    $resi = mysql_query($sqli);
    $dadosi = mysql_fetch_array ($resi,MYSQL_ASSOC);
    
    $tipo = $dadosi['submenu'];
    $id = $dadosi['codigo'];
    $menu = $dadosi['menu'];
    $titulo = $dadosi['titulo'];
    $texto = $dadosi['texto'];
    
    if($tipo == 0)
    {
        $sql = "SELECT codigo, menu, titulo, texto FROM paginas where submenu = 0 AND codigo = $id_pagina";
    }
    elseif($tipo == 1)
    {
        $sql = "SELECT codigo, menu, titulo, texto FROM paginas where submenu = 1 AND codigo = $id_pagina";
    }
    
    $res = mysql_query($sql);
    
    $dadosi = mysql_fetch_array ($res,MYSQL_ASSOC);    
    
    $id = $dadosi['codigo'];
    $menu = $dadosi['menu'];
    $titulo = $dadosi['titulo'];
    $texto = $dadosi['texto'];

    echo $texto;
    
    ?></td>
  </tr>
</table>
<?php
}
?>
<p> </p>
</body>
</html>
<?php
    desconecta ();
?>
6. Cria um menu dinamico (menu.php)
<table width="200" border="0" cellspacing="5" cellpadding="0">
    <?php

    
    $sql = "SELECT codigo,  menu, submenu FROM paginas where id_menu = 0 order by ordem";
    
    $res = mysql_query($sql);
    
    $num_linhas = mysql_num_rows($res);
    
    for ($i=0; $i < $num_linhas;$i++) {
        
        $dados = mysql_fetch_array ($res,MYSQL_ASSOC);
        $id = $dados['codigo'];
        $menu = $dados['menu'];
        $submenu = $dados['submenu'];
    ?>
  <tr>
    <td><?php
    
    if($dados['submenu'] == 0)
    {
        echo "<a href='index.php?id_pagina=".$dados['codigo']."&tipo=0'>".$dados['menu']."</a>";
    }
    else
    {
        echo $dados['menu'];    
    }
    ?> </td>
  </tr>
  <?php
    $sql = "SELECT codigo, menu FROM paginas where id_menu = ".$dados['codigo']." AND id_menu <> 0";
    
    //echo $sql."<br>";
    
    $res2 = mysql_query($sql);
    
    $num_linhas2 = mysql_num_rows($res2);
    
    if($num_linhas2 > 0)
    {
    
    
        for ($j=0; $j < $num_linhas2;$j++) 
        {
?>
  <tr>
    <td>
<?php        
        $dados2 = mysql_fetch_array ($res2,MYSQL_ASSOC);
        echo "      <a href='index.php?id_pagina=".$dados2['codigo']."&tipo=1'>".$dados2['menu']."</a>";
?>
    </td>
  </tr> 
<?php
        }
?>    

  <?php
      }
 }


  ?>  
</table> 

<p> </p>

é isso, o codigo é parece ser meio complicado mas se você entender a logica ele só vai....

Fui!

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Menu dinâmico seria criado através de um recurso administrativo, de modo que você poderia criar quantas categorias que necessitar para o menu, como exemplo:

CIDADE

REGIONAL

BRASIL

MUNDO

POLÍTICA

E através desse recurso administrativo você teria a possibilidade de inserir, modificar e até mesmo excluir a categoria do menu.

Bom, é assim que eu trabalho utilizando PHP.

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz o menu dinamico para meu site: http://www.sonhosdevelopers.com.br/, no entanto a pagina inicial ficou com url diferente da acessada com o menu.

a url inicial é:

http://www.sonhosdevelopers.com.br/index.php

nessa não aparece o conteudo resgatado do bd.

a url inicial gerada pelo menu ficou:

http://www.sonhosdevelopers.com.br/index.p...na=1&tipo=0

nessa aparece o conteudo resgatado do bd.

ficaram parecendo paginas diferentes, mas só exite uma.

tentei resolver com url amigavel, mas não consegui.

até onde entendi o conteudo do bd não é acessado logo que entra no site, mas só depois de clicado no menu. não está certo.

como posso resolver?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...