Fecha de publicación del tutorial: 2006-04-04

Tutorial visitado 18.727 veces Descargar en PDF
Manipulación de imágenes TIFF

Cómo generar archivos RSS con PHP

En Autentia nos gusta profundizar en aquellos aspectos que agilicen la gestión de un sitio web. En este sentido, es importante, por ejemplo, mantener un buen servicio de notificaciones a los usuarios.

1. Introducción a RSS (Really Simple Sindication)


RSS es el acrónimo de Really Simple Syndication o sindicación realmente simple. Una sindicación es fuente de contenidos (información estructurada) que ofrecemos a múltiples destinatarios. Los ficheros RSS utilizados por esta sindicación son ficheros XML con una estructura concreta (que definimos más adelante). Para más información sobre RSS, sugerimos el siguiente tutorial.

Cada día hay más Web de noticias, bitácoras personales (blogs), Webs personales, etc. con contenidos interesantes que nos gustaría consultar pero que por falta de tiempo y organización no llegamos a ver. Muchos de estos Webs han decidido ofrecer sus contenidos, sino completos al menos los titulares, en el formato RSS, de tal modo que, a través de lectores RSS podemos sencillamente encendiendo el programa, hacer una consulta a nuestros Webs favoritos y de un modo unificado, tener la posibilidad de echar un vistazo preliminar e incluso ir al Web original para ampliar aquellas informaciones de nuestro interés.

 

2. Estructura de un feed RSS

Un documento RSS es un documento XML que sigue una estructura predeterminada muy sencilla ("Really Simple" sindicación). Podemos dividirlo en dos apartados:

    <channel>: contiene los datos del blog y de la Web propietaria de éste; contiene todos los objetos o items a mostrar. Es obligatorio rellenar los campos.

    <item>: cada item contiene todos los datos asociados a ese item llena con los datos de nuestro blog o web, luego bajo la etiqueta mencionada van los datos del post o noticia a mostrar.

El siguiente documento define un feed para las novedades de la Web de Autentia:

<?xml version="1.0"?>
<;rss version="2.0">
  <channel>
    <title>Noticias de Autentia</title>
    <link>http://www.autentia.com/</link>
    <description>Feed RSS de noticias de Autentia</description>
    <language>es-es</language>
    <pubDate>Tue, 10 Dec 2005 12:00:00 GMT</pubDate>
    <lastBuildDate>Tue, 14 Mar 2006 12:14:00 GMT</lastBuildDate>
    <managingEditor>editor@ejemplo.com</managingEditor>
    <webMaster>webmaster@ejemplo.com</webMaster>

    <item>
      <title>Nueva presentación de Autentia</title>
      <link>http://www.autentia.com/autentiaofrece.pdf</link>
      <description>Archivo en formato PDF con la presentación de los servicios que ofrece Autentia</description>
      <pubDate>Tue, 19 Jan 2006 11:42:21 GMT</pubDate>
    </item>
    <item>
      <title>Nueva sección de descargas en Autentia</title>
      <link>http://www.autentia.com/descargas/</link>
      <description>Ahora puede descargarse nuestra presentación estándar corporativa en formato .PPT</description>
      <pubDate>Fri, 26 Dic 2005 10:06:42 GMT</pubDate>
    </item>
  </channel>
</rss>

 

3. Programando rss.php

El objetivo del programa es el de crear un programa en PHP que genere de forma dinámica un documento XML con los últimos datos actualizados en la base de datos (en el caso de este ejemplo, los últimos tutoriales publicados); de esta forma, conforme actualicemos la base de datos, también los documentos RSS estarán actualizados.

Nuestro programa PHP en concreto es muy sencillo: primero establace la conexión con la base de datos y realiza la/s consulta/s que haya que hacer; si hubiera algún problema, la página devolverá un error antes de empezar a generar el archivo XML.

<?
  $con = mysql_connect("localhost","adictospruebas","xxxxx") or die ("Imposible conectar con la base de datos");
  $res = mysql_select_db("adictosa_adictosacom") or die ("No se encontro la base de datos");

  $sqlquery = "select * from tutoriales where t_novedad=1";
  $resultado = mysql_query($sqlquery) or die("error al ejecutar consulta");

...

Lo siguiente es definir el fichero a desarrollar como un documento XML. Por ello es necesario añadir las siguientes dos líneas.

...
  header('Content-Type: text/xml');
  echo '<?xml version="1.0" encoding="iso-8859-1" ?>';

...

Ya podemos empezar a construir el RSS: en este ejemplo optamos por rellenar el canal con información estática.

...
  echo '<rss version="2.0">
  <channel>
    <title>Ultimos Tutoriales</title>
    <link>http://www.adictosaltrabajo.com/</link>
    <description>Ultimos tutoriales expuestos en AdictosAlTrabajo</description>
    <language>es-ES</language>';
...

Es a la hora de definir los items cuando utilizamos un bucle en PHP para cargar los resultados de la consulta en los diferentes campos del documento.

...
    // creamos documento si existen tutoriales nuevos
    while ($fila = mysql_fetch_array($resultado)) {
    echo '<item>
      <title>' . $fila["t_titulo"] . '</title>
      <description>' . $fila["t_descripcion"] . '</description>
      <link>http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=' . $fila["t_enlace"] . '</link>
  </item>';
  }
  echo '</channel></rss>';
?>
...

A continuación presentamos el ejemplo completo:

<?
  $con = mysql_connect("localhost","base_de_adictos","XXXXXXXX") or die ("Imposible conectar con la base de datos");
  $res = mysql_select_db("base_de_datos_1") or die ("No se encontro la base de datos");

  $sqlquery = "select * from tutoriales where nuevo=1";
  $resultado = mysql_query($sqlquery) or die("error al ejecutar consulta");

  header('Content-Type: text/xml');
  echo '<?xml version="1.0" encoding="iso-8859-1" ?>';

  echo '<rss version="2.0">
  <channel>
    <title>Ultimos Tutoriales</title>
    <link>http://www.adictosaltrabajo.com/</link>
    <description>Ultimos tutoriales expuestos en AdictosAlTrabajo</description>
    <language>es-ES</language>';

    // creamos documento si existen tutoriales nuevos
    while ($fila = mysql_fetch_array($resultado)) {
    echo '<item>
      <title>' . $fila["t_titulo"] . '</title>
      <description>' . $fila["t_descripcion"] . '</description>
      <link>http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=' . $fila["t_enlace"] . '</link>
  </item>';
  }
  echo '</channel></rss>';
?>

Y ya tenemos un archivo RSS:



A continuación puedes evaluarlo:

Regístrate para evaluarlo

Por favor, vota +1 o compártelo si te pareció interesante

Share |
Anímate y coméntanos lo que pienses sobre este TUTORIAL:

Fecha publicación: 2006-08-30-09:40:08

Autor:

[ron] ercelente muy claroo