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 enrolação então e vamos a um exemplo.

<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
        ]]>
     </texto>
</evento>
PHP
$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 a partir 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 utilizaríamos $xml->evento[0]->data , simples não. Também poderíamos 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 utilizaríamos $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