Palavra:   

Revista PHP / Banco de Dados

Flávia Jobstraibizer

Analista de sistemas, DBA Mysql, PostgreSQL, Oracle, SQLServer e Firebird. Desenvolvedora de sistemas, e administradora de servidores FreeBSD. Conheça o site www.flaviajobs.com.br

Exibindo tabelas de um banco de dados

Não se pode prever, a quantidade de coisas que precisaremos um dia fazer, em um sistema. Aliás, isso é o que eu mais ouço de colegas programadores.
Existem coisas, como o que vamos ver hoje, que você provavelmente vai usar pouco. Mas vai ser de uma utilidade extraordinária, se você não só souber usar, como se realiza tarefas de DBA em seus sistemas, ou na empresa onde trabalha.

Vou falar sobre exibição de tabelas dentro de um banco de dados.
Veja um exemplo, aqui: http://www.flaviajobs.com.br/sistemas/revistaphp/exibetabelas_mysql.php

Eu desenvolvi este script, baseado em um exemplo de “SHOW TABLES” que achei em um post de um usuário, em um fórum na internet. Pesquisando sobre esta função no manual do mysql, achei extremamente interessante, o uso de funções como esta e como “DESCRIBE”, que veremos a seguir, para que servem.

<?php
// fazendo uma conexão com o banco de dados
$conecta= mysql_connect("localhost","usuario ","senha");
// selecionando a base onde vamos exibir as tabelas
mysql_select_db("flaviajo_flaviateste",$conecta);
// iniciando a query que irá mostrar as tabelas desta base
// a função SHOW TABLES fará o que pedimos, ou seja, mostrar as tabelas do banco
// selecionado acima

$executa="SHOW TABLES"; // montando uma tabela para apresentação dos resultados
echo "<center><font face=Verdana size=2><b>Tabelas da base flaviajo_flaviateste
</b></font></center><br>";
$query=mysql_query($executa,$conecta) or die(mysql_error());
echo "<table>";

// iniciando o while para apresentação de todas as tabelas existentes
while ($dados=mysql_fetch_array($query))
{
// imprimindo o nome das tabelas existentes no banco
echo "<tr><td><font face=Verdana size=2 color=#333300><B>Nome
da tabela => $dados[0]</td></tr>";

// pedindo ao SQL, que DESCREVA o conteúdo daquela tabela:
// campos, formato do campo, index e únicos

$executa="DESCRIBE $dados[0]";
$aux=mysql_query($executa,$conecta);
while ($atributos=mysql_fetch_array($aux))

// imprimindo os campos e seus atributos pesquisados acima
echo "<tr><td><font face=Verdana size=1>$atributos[0]</td><td>
<font face=Verdana size=1>| $atributos[1]</td><td> <font face=Verdana size=1>| $atributos[3]</td></tr>";
}
// fechando a formatação de apresentação das tabelas do banco.
echo "</table>";

Vemos então o seguinte:
A função SHOW TABLES:
http://dev.mysql.com/doc/refman/5.0/en/show-tables.html

A função DESCRIBE:
http://dev.mysql.com/doc/refman/5.0/en/describe.html

Leia atentamente o manual do mysql, pra se inteirar das opções para uso destas funções.

No exemplo que mostrei acima (e que você viu em funcionamento no meu site), você vai listar o conteúdo de um banco de dados (no meu caso: flaviajo_flaviateste), mostrando então as tabelas existentes nele, com SHOW TABLES.
Após resgatarmos as tabelas, vamos descreve-las com DESCRIBE, mostrando então os atributos dos campos.

Vale lembrar, que para tornar este script mais dinâmico, você poderia fazer o seguinte:
passar o nome do banco através de get (ou mesmo post), pegando então dinamicamente e utilizando isso pra listar as tabelas de vários outros bancos.
Ficaria algo parecido com isto:

$banco = $_GET[‘banco’];
// fazendo uma conexão com o banco de dados
$conecta= mysql_connect("localhost","usuario ","senha");
// selecionando a base onde vamos exibir as tabelas
mysql_select_db("$banco",$conecta);

// e o restante do script vai aqui. ?>

Assim, teríamos um script dinâmico de listagem de tabelas e seus respectivos campos com atributos.

Esperando que você faça bom uso deste script, e qualquer coisa, me escrevam no fjferr@gmail.com

Opções de Interação

Comentários

Show tables! Excelente!!!
Por: Cássio, 28/01/2010   17:25:29
Parabéns Flávia, ótimo artigo. Gostaria de saber se posso usar o comando 'show tables' para recuperar o nome da minhas tabelas no banco e criar um menu com os nomes de tabelas recuperados, se tiver como me ajudar nesse problema. Obrigado
Simplicidade
Por: Ricardo, 20/01/2007   03:52:18
Flávia, muito oportuna esta sua materia, pois é simples e eficiente, pois muitas vezes estamos longe do nosso pc e precisamos fazer alguma alteração em um bd e não nos lembramos das tabelas bem como dos campos e tipos de dados que ele possui.
Parabéns!!! Show de bola!!!
Resposta
Por: Flávia, 08/12/2006   07:27:18
Obrigada Silas.
Muito interessante
Por: Silas, 08/12/2006   06:50:13
Parabéns Flavia, pelo excelente e autentico artigo.