Crear un RSS en PHP

  • 03/11/2006
  • 2:02 am
  • unijimpe

RSS es un lenguaje desarrollado para todo tipo de sitios que se actualicen con frecuencia y por medio del cual se puede compartir la información y usarla en otros sitios web o programas. Este lenguaje se escribe en XML en un formato especifico que es estándar.

Sea que tenemos en nuestra base de datos MySQL un tabla que contiene las noticias de nuestra página web. Lo que haremos será consultar las ultimas 10 noticias de esta tabla y las escribiremos en un XML con el formato estándar para ser un RSS.

  1. <?
  2. // Definimos variables globales
  3. $rss_titulo = 'myweb News';
  4. $rss_url = 'http://myweb.com';
  5. $rss_descripcion = 'Noticias de myweb.com';
  6. $rss_email = 'email@myweb.com';
  7.  
  8. // Parametros de conexion a MySQL
  9. $db_server = 'localhost';
  10. $db_user = 'usuario';
  11. $db_pass = 'contrasena';
  12.  
  13. // Conexion a la base de datos
  14. $conexion = mysql_connect($db_server,$db_user,$db_pass);
  15. mysql_select_db("basedatos", $conexion);
  16.  
  17. $sql = "SELECT * FROM noticias";
  18. $result = mysql_query($sql, $conexion);
  19. $item = mysql_fetch_assoc($result)
  20.  
  21. // Header para escribir XML
  22. header('Content-type: text/xml; charset="iso-8859-1"', true);
  23.  
  24. // Escribimos el archivo RSS
  25. echo '<?xml version="1.0" encoding="iso-8859-1"?>';
  26. '<rss version="0.92">
  27.      <channel>
  28.           <docs>http://blog.unijimpe.net/rss</docs>
  29.           <title>'.$rss_titulo.'</title>
  30.           <link>'.$rss_url.'</link>
  31.           <description>'.$rss_descripcion.'</description>
  32.           <language>es</language>
  33.           <managingEditor>'.$rss_email.'</managingEditor>
  34.           <webMaster>'.$rss_email.'</webMaster>
  35. ';
  36.  
  37. do {
  38.      echo "<item>" ;
  39.      echo "<title>$item['titulo']</title>" ;
  40.      echo "<link>".$rss_url."?id=".$item['id']."</link>";
  41.      echo "<description>".$item['contenido']."</description>";
  42.      echo "</item>";
  43. } while ($item = mysql_fetch_assoc($result));
  44.  
  45. echo "</channel>";
  46. echo "</rss>";   
  47. ?>

Con esto ya hemos generado nuestro XML con el formato RSS, el siguiente paso es colocar un enlace y leerlo en cualquier Lector de Feeds. Como comentario adicional puedes colocar un tag HTML a tu página para indicarle que tu web tiene asociado un RSS, esto se hace con el tag link en le header de tu HTML donde se coloca la ruta de tu archivo RSS.

  1. <link rel="alternate" type="text/xml"
  2. title="RSS .92" href="http://myweb.com/rss.php" />

Posts Relacionados

  • Uncategorized

Total de Comentarios: 34

Publicidad
Jose
03/11/2006
7:27 pm

Esta muy bueno el articulo

13/12/2006
8:39 am

Muy util tu articulo! Estoy probandolo en java y una vez que tengo el xml creado donde lo debo colocar?. Mi aplicacion web está en localhost, como puedo probar q funciona bien el rss que he creado?
Slds. tlloreti@gmail.com

13/12/2006
10:03 pm

Bueno una vez creado solo tienes que poner un enlace indicando que es el RSS de tu web para que los visitantes se suscriban. Para que lo pruebes necesitarias un programa lector de RSS, no se me ocurro alguno pues los que uso son online.
Saludos

14/12/2006
12:19 am

hey puedes usar FeedReader es un muy buen lector de RSS, es mi lector favorito.

solo un detalle si utilizas el plugin SWFObject para incluir flash en tus post este lector no te recogera esas peliculas.

menciono esto unijimpe para que tu le heches un ojo tambien, y lo compruebes por ti mismo y si nos puedes dar una solucion si es que se puede.

la pagina para bajar el FeedReader:
http://www.google.com/reader

14/12/2006
12:24 am

perdon esta es la direccion para bajar el Feedreader

http://www.feedreader.com/download

caracolillo
26/12/2006
5:51 am

una duda.
como hago para que el php que genera el XML del RSS se genere de forma periodica?

26/12/2006
9:20 pm

En realidad este RSS se generará cada ves que alguien haga un llamado a esta página asi que no hay necesidad de hacerlo de forma periodica pues cada usuario que solicite esa página verá siempre la ultima información.

jose
15/05/2007
4:22 am

Buenas, llevo varios dias intentando realizar los item mediante un bucle, es decir, sin tener que copiar un item y modificarlo cada vez que inserto uno nuevo. alguien me puede explicar como?? creo que lo de arriba lo hace, pero me da error.
gracias de antemano

Lucas
09/12/2007
4:19 pm

como puedo poner el rss de clarin en mi sitio web :(.?

08/01/2008
9:24 pm

excelente artículo, y la web tmb!!! te lo curras mucho.

Permiteme quitarme el sombrero y felicitarte ;)

15/01/2008
2:33 pm

Buenas
El articulo esta bien pero me sale un Erro “Parse error: syntax error, unexpected T_ECHO in /home/caribe/domains/radiowebcaribe.com/public_html/rss.php on line 32″ me gustaria que me ayudaran gracias.

nereah
10/03/2008
11:26 am

Me ha parecido muy util tu articulo, también muy simple, he conseguido a la primera que me funcionara y menos mal porque tenia un poco de prisa.

:)

Gracias.

28/04/2008
6:23 pm

la forma más fácil de agregar un RSS es así

ósea, despues del rss ponen el link que va al xml.

Ralos
07/05/2008
1:25 pm

Tengo un problema ya probe y un xxx.rss lo leo perfectamente con mi lector RSS (SharpReader), pero cuando le meto esta informacion y trato de leer y suscribirme al rss.php con mi lector me manda el siguiente error.

Error parsing RSS XML: Not a valid xml document: Falta el elemento raíz.
gracias por su ayuda

Elissa
20/05/2008
12:10 am

Hola! me parece ecelente articulo, pero kisiera saber como se hace para crear la cuenta del administrador que se ncargara de cambiar las noticias?…. pero que lo haga en una aplicacion web desde mi sitio

Charly
02/06/2008
10:18 pm

Jose David, tuve un error similar al tuyo y modificando la linea 40. por esta: echo “”.$item['titulo'].”"; lo solucioné.

Espero te sirva,

Saludos !

Charly
02/06/2008
10:20 pm

Entre las doble comillas que aparecen en el mensaje anterior, va el tag title y /title. Con sus respectivos que si los pongo no aparecen.

Pablo
20/06/2008
1:05 pm

Gracias, buen articulo
Solo me quedaron unas dudas:
¿Qué etiquetas ocupan las distintas versiones de RSS? y ¿Cual es la diferencia sustancial entre las versiones 0.92, 1.0 y 2.0?

do
11/07/2008
8:48 am

Esta bueno el artículo, pero me genera un error al generar el header.
————————–
Parse error: parse error, unexpected T_STRING in /1/ar/com/e/s/p/xxxxxx.com/htdocs/feed/index.php on line 27
————————–

En el código de arriba la línea que me genera error es la 22.
————————–
// Header para escribir XML
header(’Content-type: text/xml; charset=”iso-8859-1″‘, true);
—————————–

Gracias.

Fernando
08/09/2008
11:03 am

muy buena guia… andaba buscando la forma de hacer uno y esta es la mejor que he encontrado hasta ahora

28/09/2008
5:10 am

Muy bueno, pero tiene algunos errores sintacticos. Falta un ‘;’ en la linea 19, y en la 40 se te ha olvidado poner lo de “$item['titulo']” por separado del resto del string. Pero por lo demas, todo bien.

morena
30/09/2008
12:59 am

Hola, me parece super bueno el codigo pero tengo un problema, lo carge a mi server pero me sale un error al tratar d leer el archivo xml, o es q tengo q direccionarlo al rss.php pero igual me da error gracias

enrique
16/10/2008
1:47 pm

perfecta la explicacion. me sirvio
Yo tengo un problema deceo escribir un lector rss de tal forma que yo pueda modificar o insertar una cadena es decir otra direccion delante del link del rss

15/12/2008
7:02 pm

revisa el codigo algunas partes estan mal :) mil gracias a mi me sirvio perfecto! saludos! ahh solo me falta averiguar como colocar imagenes, exitos!

iSVai
12/01/2009
2:34 pm

Esto es por lo que me encanta este blog, los artículos son siempre muy prácticos e interesantes, además de aprender cosas que no tenía ni idea. Aqui muestra lo fácil que es.

Luis
15/01/2009
6:51 pm

Una duda espero me la puedan resolver soy nuevo en esto de los rss, el ejemplo que se da aqui me imagino es un archivo php que debo incluir en mi index.php,no?bueno pues la verdad no tengo idea de como hacerlo espero me puedan ayudar.

Luis
15/01/2009
7:04 pm

se que con el codigo del tag link en el header del HTML me pone el acceso directo en la barra de direccion pero yo quiero ponerlo en el cuerpo de mi web.

Luis
15/01/2009
7:18 pm

Warning: Cannot modify header information – headers already sent by (output started at C:\AppServ\www\rss\rss.php:1) in C:\AppServ\www\rss\rss.php on line 22

la linea 22 es esta: header(’Content-type: text/xml; charset=”iso-8859-1″‘, true);

Que hize mal???

Matias
12/02/2009
9:35 am

Hola , una consulta como le hago para filtrar aquellas noticias de la base de datos que tengan caracteres extraños , me explico , cada vez que lee un dato genera el xml , pero cuando aparece un caracter extraño este da error , si alguien puede ayudarme le agradezco gracias

14/02/2009
10:38 pm

El problema no son los caracteres extraños como los llamas, el problema es que si deseas incluir estos caracteres en tu RSS es necesario colocar el contenido entre los tags CDATA.

Por ejemplo para el campo description, en lugar de mostrar:

<description> contenido </description>

Deberíamos mostrar:

<description><![CDATA[ contenido ]]></description>

Puedes leer mas acerca de este tema en http://www.w3schools.com/XML/xml_cdata.asp

Münhe
24/02/2009
5:06 pm

FELICITACIONES… con esto me aventuro ya mismo a incorporar RSS a mi aplicación

14/05/2009
3:41 pm

Buen artículo, lo tomé como base pero se me ocurren varias mejoras. Por ejemplo, hacer que el RSS se guarde en un archivo e ir actualizándolo cada vez que se da de alta un artículo en el backend. También se puede utilizar alguna extensión que sea un poco más elegante (como SimpleXML o DOM), para no usar echo.

Muy bueno el blog.
Saludos.

gerardo
14/05/2009
4:20 pm

Hola una duda digamos que creo el xml pero selecciono 10 primeros registros y cuando lo quieran agregar a un lector de feed ya podran ver todos los post o articulos.

otra duda si ya cree mi xml que relacion puedo hacer con feedbuner

saludos

01/07/2009
8:37 am

yo lo que hice fue hacer este php que seleccionaba los 10 ultimos registros de la base de datos.

Luego con el archivo .htaccess modifique el archivo rss.php por rss.xml asi FEEDBURNER lo aceptaba y de esta forma el xml (php) es mas dinamico
lo pueden ver en:
http://www.mensajeconpoder.com/rss.xml

Unijimpe sos un DIOS!!!

Enviar Comentario

(*)

(*)