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!

6