You are on page 1of 6

Gerando um arquivo XML a partir de uma consulta ao MySQL

Júlio César Martini (e-mail) é DBA Oracle 9i, formado em Tecnólogo em Informática e trabalha com
PHP desde 2000. Foi o primeiro profissional a chegar à marca de 100 artigos publicados no
iMasters e é programador PHP/Oracle da Fundação Hermínio Ometto - UNIARARAS.

Fala galera! Dando contunuidade a nossa série sobre XML, mostraremos um exemplo de geração
de um arquivo XML a partir de uma tabela do MySQL.

Queria, antes de tudo, agradecer a todos os leitores que me mandam e-mail com elogios e
sugestões para a coluna de PHP, e ainda fazer um grande pedido, que é a colaboração de todos
os amigos com o voto no iMasters para o iBest. Este ano todos estamos trabalhando bastante para
conquistarmos o prêmio e fazermos uma festa bonita da comunidade. Conto com o apoio de vocês!
Valeu.

Vamos lá:

Estrutura da Tabela

Script que vai gerar o arquivo XML

<?
//CONECTA AO BANCO DE DADOS
$conn = @mysql_connect("localhost", "","") or die("ERRO NA
CONEXÃO");

//SELECIONA A BASE DE DADOS A SER UTILIZADA


$db = @mysql_select_db("imasters", $conn) or die("ERRO NA
SELEÇÃO DA BASE DE DADOS");

//SQL
$sql = @mysql_query("SELECT A.ID, A.NOME, A.EMAIL FROM
contatos A") or die("ERRO NO SQL");

1
//TOTAL DE LINHAS AFETADAS PELA CONSULTA
$row = mysql_num_rows($sql);

//VERIFICA SE A PESQUISA RETORNOU ALGUMA LINHA


if($row > 0) {

//ARQUIVO
$arquivo = "contato.xml";

//ABRE O ARQUIVO(SE NÃO EXISTIR, CRIA)


$ponteiro = fopen($arquivo, "w");

//ESCREVE NO ARQUIVO XML


fwrite($ponteiro, "<?xml version="1.0"?> ");
fwrite($ponteiro, "<agenda> ");

for($i=0; $i<$row; $i++) {

//PEGA OS DADOS DO SQL


$id = mysql_result($sql,$i,"A.ID");
$nome = mysql_result($sql,$i,"A.NOME");
$email= mysql_result($sql,$i,"A.EMAIL");

//MONTA AS TAGS DO XML


$conteudo = "<contato> ";
$conteudo .= "<id>$id</id> ";
$conteudo .= "<nome>$nome</nome> ";
$conteudo .= "<email>$email</email> ";
$conteudo .= "</contato> ";

//ESCREVE NO ARQUIVO
fwrite($ponteiro, $conteudo);
}//FECHA FOR

//FECHA A TAG AGENDA


fwrite($ponteiro, "</agenda>");

//FECHA O ARQUIVO
fclose($ponteiro);

//MENSAGEM
echo "<h2>iMasters - Coluna PHP - Artigo 83</h2><br>";
echo "O arquivo <b>".$arquivo."</b> foi gerado com SUCESSO !
";
}//FECHA IF($row)
?>

Analisando o Script

2
Linha 09 - Conecta com o banco de dados MySQL (hostname, usuario, senha).
Linha 13 - Seleciona a base de dados a ser utilizada. (No meu caso, imasters).
Linha 17 - Executa o comando SQL que vai buscar informações para gerar o arquivo.

Linha 22 - Pega o total de linhas afetadas pela consulta SQL, nesse exemplo será retornado 3.
Linha 25 - Se retornar algo, prepara para gerar o arquivo XML.
Linha 28 - Atribuímos a uma variável o nome do arquivo que vamos gerar.
Linha 31 - Abrimos o arquivo no modo escrita, se não existir o arquivo será criado.
Linha 34 - Escrevemos no arquivo o cabeçalho do XML

3
Linha 37 - Entramos no FOR para pegar os dados da consulta e escrever no arquivo.
Linha 40 - Recebe o ID do contato.
Linha 41 - Recebe o NOME do contato.
Linha 42 - Recebe o EMAIL do contato.
Linha 45 - Monta as tags.
Linha 52 - Grava os dados no arquivo XML

Temos 3 contatos, portanto, a rotina acima será executada 3 vezes.

PS: Estou testando esse script em ambiente Windows, então para pular linha usei , se vc tiver no
Linux use apenas .

Linha 56 - Escrevemos a TAG </agenda> para finalizar.


Linha 59 - Fecha o arquivo.
Linha 63 - Exibe a mensagem.

Screenshot do arquivo de geração

4
Arquivo gerado

Visualizando o arquivo no browser

5
Espero que tenham gostado!

DOWNLOAD
Clique AQUI e faça o download do script.

Não deixe de nos enviar críticas ou sugestões para o próximo assunto, afinal a coluna é de vocês.

Boa semana a todos!

You might also like