Palavra:   

Revista PHP / PHP

Tiago Hillebrandt

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:
  1. CREATE DATABASE rss;
  2. USE rss;
  3. CREATE TABLE noticias (
  4. not_id int(6) NOT NULL AUTO_INCREMENT,
  5. not_titulo varchar(60) NOT NULL,
  6. not_texto text NOT NULL,
  7. not_data date NOT NULL,
  8. not_hora time NOT NULL,
  9. constraint PRIMARY KEY(not_id)
  10. );
2º Passo: Crie um arquivo PHP chamado Rss.class.php.

3º Passo: Edite o arquivo recém-criado e insira o seguinte código:
  1. <?php
  2. class Rss
  3. {
  4. #Declaracao de variaveis
  5. private $conexao = null;
  6.  
  7. private $servidor;
  8. private $usuario;
  9. private $senha;
  10. private $alias;
  11.  
  12. /**
  13. * Construtor
  14. */
  15. public function __construct()
  16. {
  17. #Dados para conexao com o banco de dados
  18. $this->servidor = "localhost";
  19. $this->usuario = "root";
  20. $this->senha = "vertrigo";
  21. $this->alias = "rss";
  22.  
  23. #Efetua a conexao com o banco e seleciona a base de dados
  24. $this->conexao = mysql_connect($this->servidor, $this->usuario, $this->senha);
  25. if ($this->conexao)
  26. {
  27. mysql_select_db($this->alias, $this->conexao);
  28. }
  29. }
  30.  
  31. /**
  32. * Gera o RSS 2.0
  33. *
  34. * @param String $titulo titulo do rss
  35. *
  36. * @param String $link url do site
  37. *
  38. * @param String $descricao descricao do rss
  39. *
  40. * @param String $tabela tabela do banco de dados que será puxada as informacoes
  41. *
  42. * @param String $campo campo da tabela pelo qual sera ordenado, de forma decrescente, o rss
  43. *
  44. * @param String $destino url de destino das noticias - Ex: http://www.site.com.br/noticia?id=
  45. *
  46. * @return void
  47. */
  48. public function rss($titulo, $link, $descricao, $tabela, $campo, $destino)
  49. {
  50. #Seleciona os dados no banco de dados
  51. $sql = "SELECT * FROM $tabela ORDER BY $campo DESC;";
  52. $res = mysql_query($sql);
  53.  
  54. #Cria a variavel $xml com o codigo xml necessario para criar o RSS
  55. $xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>";
  56. $xml .= "<rss version=\"2.0\">";
  57. $xml .= "<channel>";
  58. $xml .= "<title>$titulo</title>";
  59. $xml .= "<link>$link</link>";
  60. $xml .= "<description>$descricao</description>";
  61. $xml .= "<language>pt-br</language>";
  62.  
  63. #Verifica se o numero de linhas resultantes da query eh maior do que zero
  64. if (mysql_numrows($res) > 0)
  65. {
  66. #"Quebra" a matriz
  67. while ($dados = mysql_fetch_array($res))
  68. {
  69. $xml .= "<item>";
  70. $xml .= "<title>$dados[1]</title>";
  71. $xml .= "<link>$destino$dados[0]</link>";
  72. $xml .= "</item>";
  73. }
  74. }
  75.  
  76. $xml .= "</channel>";
  77. $xml .= "</rss>";
  78.  
  79. #Retorna o valor da variavel $xml
  80. return $xml;
  81. }
  82. }
  83. ?>
4º Passo: Crie um arquivo chamado index.php, no mesmo diretório que o Rss.class.php, e insira o seguinte código:
  1. <?php
  2. require_once("Rss.class.php"); //chama o arquivo
  3. $obj_rss = new Rss(); //instancia a classe
  4. 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. ?>
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:


Opções de Interação

Comentários

Excelente artigo
Por: Alexandre, 31/01/2010   11:39:17
O artigo está excelente! Na parte dos comentários eu achei que você poderia ter se alongado um pouco mais, principalmente se o leitor não tiver experiência com Orientação a Objetos. Como eu já tinha a minha própria tabela de notícias com alguns campos de nomenclatura diferentes do exemplo, óbviamente alguma adaptação foi necessária. Também não usei a parte que conecta ao banco de dados, pois eu já tinha funções específicas para tal. No entanto, se você seguir o código do Tiago na íntegra, tudo irá funcionar perfeitamente.

Não esqueça de colocar a classe e o index.php indicado no artigo em um local separado do index do seu site.

Tiago, obrigado pelo artigo, eu estava mesmo há muito tempo precisando dessa dica.
Muito boa esta explicação
Por: Elesandro, 23/10/2009   11:09:40
Faço Sistemas de Informação na Faculdade de Mauá - FAMA.
Estou começando a usar o php e estes tutoriais postado por vocês é de grande valia.
Muito bom
Por: Willian, 28/08/2009   09:11:54
Muito bom , recomendo.