XML nem tudo deve ir para o banco de dados
Olá pessoal, hoje gostaria de compartilhar uma coisa que me ocorreu quando um cliente pediu para colocar uma simples listagem dos eventos que promovia e que fossem sumindo a medida que aconteciam. Claro como todo desenvolvedor web, a primeira coisa que eu pensei foi utilizar um banco de dados.
Examinando com um pouco mais de atenção um banco de dados nem sempre é a melhor escolha, neste caso por exemplo, as informações seriam alteradas ou adicionas muito raramente e seria eu mesmo que as faria. Então porque gastar tempo criando um sistemas de gerenciamento ou alterar dados utilizando o phpmyadmin quando um simples XML velho de guerra resolve.
Devo admitir que faz pouco tempo que comecei a utilizar XML, quando comecei a apreender PHP as formas de ler XML eram um pouco complicadas, mas com a chegada do PHP 5 isso foi resolvido com a classe SimpleXML que está muito fácil de se trabalhar.Bom vamos parar de enrrolação então e vamos a um exemplo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <evento> <titulo>Festa 1</titulo> <data>2008-05-08</data> <![CDATA[ <b>Festa, festa, festa!!!</b> - descrição da festa com tags por exemplo ]]> </texto> </evento> <evento> <titulo>Festa 2</titulo> <data>2008-06-08</data> <texto><![CDATA[ <b>Festa, festa, festa!!!</b> - descrição da festa com tags por exemplo ]]> </texto> </evento> <evento> <titulo>Festa 4</titulo> <data>2008-07-08</data> <texto><![CDATA[ <b>Festa, festa, festa!!!</b> - descrição da festa com tags por exemplo ]]> |
PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $xml = simplexml_load_file('programacao.xml'); $n_eventos = 5; $i = 0; foreach($xml->evento as $evento){ if( $i < $n_eventos and $evento->data < date('Y-m-d') ){ echo "<strong>".$evento->data." - ".$evento->titulo."</strong>"; echo ' <div>'; echo $evento->texto; echo "</div> "; $i++; } } |
Bom vamos começar, na linha 1, a função simplexml_load_file(‘programacao.xml’); cria um objeto SimpleXML apartir de um arquivo, no caso ‘programacao.xml’. Na linha 3 definimos a quantidade de eventos que será exibida e na linha 4 iniciamos o contador $i com 0.
A partir da linha 5 começa o laço foreach, como podemos ver para acessar um nó do XML é bastante simples, basta utilizar o operador -> para acessar um nó ou array de nós, sendo que cada nó pode conter alguma informação ou outros nós, sendo utilizado assim, o operador em seqüência. Como exemplo, para acessar o nó data do primeiro evento utilizariamos $xml->evento[0]->data , simples não. Também poderiamos acessar o atributo de um nó de forma semelhante, por exemplo, se nó data <data diasemana=”Segunda-feira”>2008-07-08</data> para acessá-lo utilizariamos $xml->evento[0]->data['diasemana'];, entenderam?
Na linha 6 testamos se o contador $i não atingiu o número de eventos, e se a data do evento($evento->data) ainda não passou, ou seja é maior que a data de hoje ( date(‘Y-m-d’)).
Da linha 7 à 10 concatenamos algumas tags HTML e alguns dados dos nós para dar forma a informação que desejamos exibir e logo após incrementamos o contador $i.
Quem quiser pode fazer o download do exemplo aqui
Espero que esse pequeno tutorialzinho tenha sido útil, aguardem que em breve farei mais alguns, não só PHP.
T++.c

Atualmente existe 1 Comentário