Sei sulla pagina 1di 5

Gerando um arquivo XML a partir de uma consulta ao MySQL

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");

//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

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

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

Arquivo gerado

Visualizando o arquivo no browser


Espero que tenham gostado!

Autor: Júlio César Martini