Tutoriais

02 jul 2009 12h25

RSS com PHP + MySQL - aprenda a colocar no seu site!

  • URL Curta:
RSS com PHP + MySQL - aprenda a colocar no seu site!
RSS é um subconjunto de "dialetos" XML que servem para agregar conteúdo ou "Web syndication", podendo ser acessado mediante programas ou sites agregadores. É usado principalmente em sites de notícias e blogs.

Saiba mais sobre RSS

Vou colocar pra vocês aqui como faço nos meus sites para colocar RSS/Feeds, tudo comentado abaixo:
Crie um arquivo rss.php com o código abaixo:
<?php

// Incluindo as Configurações, como classes, mysql, etc
require_once("configuracoes.php");
// URL do Seu Site
$url_p = "http://mndti.com/";

// Função para inverter o htmlentities que vem da base de dados
function unhtmlentities ($string) {
$trans_tbl =get_html_translation_table (HTML_ENTITIES );
$trans_tbl =array_flip ($trans_tbl );
return strtr ($string ,$trans_tbl );
}

// CONTENT TYPE PARA ACENTUAÇÃO CORRETA
header("Content-Type: application/rss+xml; charset=ISO-8859-1");
// XML Enconding
echo '<?xml version="1.0" encoding="ISO-8859-1"?>';
// Abrindo a TAG do RSS
echo '<rss version="2.0">';
// Abrindo a TAG do Canal
echo '<channel>';
// URL do seu site
echo '<link>http://www.mdnti.com/</link>';
// Logotipo do seu site
echo '<image>';
echo '<url>'.$url.'img/logo.png</url>';
echo '</image>';
// Descrição do seu site
echo '<description>Notícias dicas tutorias, etc......</description>';
// Tag Languange setada me pt-br
echo '<language>pt-br</language>';
// Copyright
echo '<copyright>Copyright (C) 2009 - mndti.com</copyright>';
// E-mail do webmaster
echo '<webMaster>[email protected]</webMaster>';

//----------------------------------------------------------------------------
// INICIANDO CONSULTAS AO BANCO DE DADOS E EXIBIÇÃO DO FEED
//----------------------------------------------------------------------------

// Consulta a tabela noticias, ordena por data e limita as 20 últimas notícias
// Atenção estou usando uma classe mysql, deve adaptar esta query a sua classe
// ou usar pelo método normal msyql_query(consulta);
// http://php.net/manual/pt_BR/function.mysql-query.php
$consulta = $SQL->Query("SELECT * FROM ".$prefix."noticias ORDER BY data DESC LIMIT 0,20");
// Se retornar algo, exibi os feeds
if ($consulta) {
// Titulo dos feeds
echo '<title>MNDTI - Últimas Informações</title>';
// Loop para exibir as nóticias
while ($resultado = fetch_array ($consulta)) {
// Formatando a data que veio do mysql no formato timestamp
$date = date("D, d M Y H:i:s O", $resultado['data']);
// Formatando o título que foi gravando usando htmlentities, pois na tag title não interpreta sozinha
// a função está logo acima, caso não tenha gravado os dados com htmlentities, basta tirar a função assim:
// $titulo = $resultado['titulo'];
$titulo = unhtmlentities($resultado['titulo']);

// Declarando a url que o visitante vai clicar pra ir em cada nóticia invidualmente
// $url_p é a url base do site declarada no ínicio
// ?act=noticias é o arquivo que exibe as noticias no site, pode ser somente noticias.php?id={$resultado['tid']}
// $resultado['tid'] é obviamente o id de cada notícia da tabela pelo auto_increment.
$url = "{$url_p}?act=noticias&amp;id={$resultado['tid']}";
// Aqui abrimos a tag item que é gerada a cada loop no while
echo '<item>';
// Exibimos o título da nóticia, já declarada acima
echo '<title><![CDATA['.$titulo.']]></title>';
// Exibimos a url de cada notícia invidual, para o leitor ler a nóticia completa
echo '<link>'.$url.'</link>';
// Colocamos uma breve descrição que já vem do mysql com no máximo 255 caracteres
// <br /> quebra de linha e exibo também um link Leia Mais para ficar mais intuitivo para o visitante
// colocando a mesma $url declarada acima
echo '<description><![CDATA['.$resultado['m_descricao'].'...<br /><a href="'.$url.'" title="Continuar Lendo">Leia Mais</a>]]></description>';
// Exibimos a data também já declarad acima
echo '<pubDate>'.$date.'</pubDate>';
// Fechamos a tag item
echo '</item>';
}
}
// Fecho a tag canal que é exibida apenas uma vez
echo '</channel>';
// Fecho a tag rss que também é exibida apenas uma vez
echo '</rss>';
?>


Coloque no seu arquivo index.php:
<link rel="alternate" type="application/rss+xml" href="http://mndti.com/rss.php" title="Últimas Informações" />


Dúvidas, sugestões devem ser deixadas nos comentários abaixo.

© MNDTI - Tecnologia e Informação. Todos Direitos Reservados. Política de privacidade.