» Início » Programação » PHP » Criando RSS 2.0 (Really Simple Syndication) com PHP e MySQL
 
Avaliação: | Publicado em: 19/12/2007
Criando RSS 2.0 (Really Simple Syndication) com PHP e MySQL
Tiago Hillebrandt trabalha atualmente como desenvolvedor Web e professor. Tem conhecimentos em diversas tecnologias como AJAX, Delphi, C, Firebird/Interbase, MySQL, Access, Javascript, HTML, CSS, Java, Pascal, SQL e PHP. Trabalha também com ferramentas como Corel Draw, Photoshop, Dreamweaver e Flash. Atualmente está cursando Tecnologia em Sistemas de Informação na Universidade do Estado de Santa Catarina (UDESC).


Criando RSS 2.0 (Really Simple Syndication) com PHP e MySQL
Olá galera, tudo bem? Neste artigo criaremos um RSS, baseado numa tabela de notícias, com programação PHP orientado a objetos e banco de dados MySQL.

Se alguém tiver interesse, para desenvolver e rodar os scripts, utilizei os seguintes softwares: VertrigoServ 2.19 (http://vertrigo.sf.net), PHPEclipse 1.1.8 (http://phpeclipse.sf.net) e Mozilla Firefox 2.0.0.11 (http://www.mozilla.org/firefox).

Definição de RSS segundo a Wikipédia: "RSS é um subconjunto de 'dialectos' XML que servem para agregar conteúdo ou 'Web syndication', podendo ser acedido mediante programas ou sites agregadores. É usado principalmente em sites de notícias e blogs."

1º Passo: Copie o comando SQL abaixo e cole no seu console MySQL:
create database rss;
use rss;
create table noticias (
    not_id int(6) not null auto_increment,
    not_titulo varchar(60) not null,
    not_texto text not null,
    not_data date not null,
    not_hora time not null,
    constraint primary key(not_id)
);

2º Passo: Crie um arquivo PHP chamado Rss.class.php.

3º Passo: Edite o arquivo recém-criado e insira o seguinte código:
<?php
class Rss
{
    #Declaracao de variaveis
    private $conexao = null;

    private $servidor;
    private $usuario;
    private $senha;
    private $alias;

    /**
     * Construtor
     */

    public function __construct()
    {
        #Dados para conexao com o banco de dados
        $this->servidor = "localhost";
        $this->usuario = "root";
        $this->senha = "vertrigo";
        $this->alias = "rss";

        #Efetua a conexao com o banco e seleciona a base de dados
        $this->conexao = mysql_connect($this->servidor, $this->usuario, $this->senha);
        if ($this->conexao)
        {
            mysql_select_db($this->alias, $this->conexao);
        }
    }

    /**
     * Gera o RSS 2.0
     *
     * @param String $titulo titulo do rss
     *
     * @param String $link url do site
     *
     * @param String $descricao descricao do rss
     *
     * @param String $tabela tabela do banco de dados que será puxada as informacoes
     *
     * @param String $campo campo da tabela pelo qual sera ordenado, de forma decrescente, o rss
     *
     * @param String $destino url de destino das noticias - Ex: http://www.site.com.br/noticia?id=
     *
     * @return void
     */

    public function rss($titulo, $link, $descricao, $tabela, $campo, $destino)
    {
        #Seleciona os dados no banco de dados
        $sql = "SELECT * FROM $tabela ORDER BY $campo DESC;";
        $res = mysql_query($sql);

        #Cria a variavel $xml com o codigo xml necessario para criar o RSS
        $xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>";
        $xml .= "<rss version=\"2.0\">";
        $xml .= "<channel>";
        $xml .= "<title>$titulo</title>";
        $xml .= "<link>$link</link>";
        $xml .= "<description>$descricao</description>";
        $xml .= "<language>pt-br</language>";

        #Verifica se o numero de linhas resultantes da query eh maior do que zero
        if (mysql_numrows($res) > 0)
        {
            #"Quebra" a matriz
            while ($dados = mysql_fetch_array($res))
            {
                $xml .= "<item>";
                $xml .= "<title>$dados[1]</title>";
                $xml .= "<link>$destino$dados[0]</link>";
                $xml .= "</item>";
            }
        }

        $xml .= "</channel>";
        $xml .= "</rss>";

        #Retorna o valor da variavel $xml
        return $xml;
    }
}
?>

4º Passo: Crie um arquivo chamado index.php, no mesmo diretório que o Rss.class.php, e insira o seguinte código:
<?php
require_once("Rss.class.php"); //chama o arquivo
$obj_rss = new Rss(); //instancia a classe
echo $obj_rss->rss("Exemplo de RSS 2.0", "http://www.seusite.com.br", "Últimas notícias", "noticias", "not_id", "http://www.seusite.com.br/noticia.php?id="); //escreve o valor retornado do metodo
?>

5º Passo: Basta inserir registros no banco de dados, acessar o arquivo index.php e pronto! Você já terá seu script RSS a disposição! Inseri dois registros no banco de dados, como exemplo, e obtive o seguinte resultado:


É isso aí pessoal, qualquer dúvida estou a disposição ok? Até mais =)
Arquivos anexos ao artigo
Artigos relacionados

Leandro <leandro.olimpio>
Muito útil seu tutorial, mas ocorreu um pequeno erro aqui no meu arquivo.

--Parse error: parse error, expecting T_OLD_FUNCTION' or T_FUNCTION' or T_VAR' or '}''--

Sabe me dizer porq deste erro!
Muito obrigado desde já
Tiago Hillebrandt <tiagoscd@yahoo.com.br>
Olá Leandro!

Qual versão do PHP você está utilizando? Acredito que ela deve ser antiga certo? Se for, tente migrar para o PHP 5.2. =) Senão entre em contato pelo meu email!

Abraço
Muito bom o tutorial !! Adorei !! mas pra mim deu esse erro !! Parse error: parse error, expecting T_OLD_FUNCTION' or T_FUNCTION' or T_VAR' or '}''--
O q sera que esta errado ?
Leandro <leandro.olimpio>
Ùso o easy php 1.8, contendo o php4.
O mesmo erro erro q ocorreu comigo ocorreu tambem pro Edgar! Deve ser a versão mesmo!

Mas se tiver um tuto de do php 4 e quiser disponibilizar ficaremos gratos!

Mesmo assim obrigado por compartilhar!