Jump to content
Fórum Script Brasil
  • 0

Página Com Menu Dinâmico


mariozinho_de

Question

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 to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0
Guest Sadla

Oi. estou começando agora... então, seria possível dizponibilizar os arquivos em zip por exemplo?

Eu não consegui entender... :huh:

Grata

Link to comment
Share on other sites

  • 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      651.9k
×
×
  • Create New...