Foros del Web » Programando para Internet » PHP »

rss con PHP y bases de datos

Estas en el tema de rss con PHP y bases de datos en el foro de PHP en Foros del Web. Hola a todos No se si este es sitio indicado para poner esta cuestión, es por esto que también la he publicado en el apartado ...
  #1 (permalink)  
Antiguo 28/07/2005, 11:01
Dig
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 12 años, 11 meses
Puntos: 0
rss con PHP y bases de datos

Hola a todos
No se si este es sitio indicado para poner esta cuestión, es por esto que también la he publicado en el apartado de XML.

El caso es que me gustaria generar un archivo rss para que otros usuarios pudiesen sindicar mis noticias en su web pero me gustaria que este archivo se hiciese a partir de una base de datos que es donde estan almacenadas las noticias.

Así, cada día se generaría y se actualizaria el rss con las noticias introducidas en la base de datos.

Venga, a ver si alguien pme puede ayudar

Saludos
  #2 (permalink)  
Antiguo 28/07/2005, 11:06
 
Fecha de Ingreso: julio-2005
Mensajes: 23
Antigüedad: 12 años, 5 meses
Puntos: 0
es necesario que tenga extension la extension del rss ?

si no es necesario puedes crear un .php y ponerte a ir mostrando lo de esa base de datos como si fuese un archivo rss.
  #3 (permalink)  
Antiguo 28/07/2005, 15:05
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 14 años, 7 meses
Puntos: 35
loading...........



bueno esta es la funcion que uso para generar un rss ya sea 2.0 1.0 o ATOM

//nota la funcion salida() la debes modificar porque es mi funcion para formatear en html toda la salida
ya te ubicaràs a partir de esta funcion .... (en la siguiente respuesta)


el como uso la funcion te ubicaràs en mi web, OPEN SOURCE

http://69.56.196.226/~maborak/leimnud/sindicar.php

y su open source

http://69.56.196.226/~maborak/leimnu..._file=SINDICAR

Creo que tehaces problemassegun dices en la base de datos, te sugiero que el resultado de algun query en tu base de datos lo generes directamente con un while que a la vez va poniendo como un item al resultado.


No es necesario que tenga la extension rss o xml pero que el motor sea XML si es necesario.






connection closed.
__________________

Maborak Technologies
  #4 (permalink)  
Antiguo 28/07/2005, 15:08
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 14 años, 7 meses
Puntos: 35
loading...........


Código PHP:
function rss_enviar($_formato,$_rss_query,$title)
{
        //        $title="Leimnud - Manuales personales";
        $t=$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'];
        $ty=explode("/",$t);
        array_pop($ty);
        //        $link="http://".implode("/",$ty)."/".INDEX;
        $linka="http://".implode("/",$ty)."/".INDEX;
        $_link="http://".implode("/",$ty)."/";
        if($_formato=='atom')
        {
                $_atom="<?xml version="1.0\" encoding=\"utf-8\"?>\n";
                
$_atom.="<feed version=\"0.3\" xmlns=\"http://purl.org/atom/ns#\">\n";
                
$_atom.="<title>".rss_encoding($title,true)."</title>\n";
                
$_atom.="<link rel=\"alternate\" type=\"text/html\" href=\"".$linka."\"/>\n";
                
$_atom.="<modified>".date("Y-m-d")."</modified>\n";
                
$_atom.="<author>\n";
                
$_atom.="<name>[email protected]</name>\n";
                
$_atom.="</author>\n";
        }
        if(
$_formato=='rdf')
        {
                
$_rdf="<?xml version=\"1.0\"?>\n";
                
$_rdf.="<rdf:RDF \n";
                
$_rdf.="xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" \n";
                
$_rdf.="xmlns=\"http://my.netscape.com/rdf/simple/0.9/\" \n";
                
$_rdf.="xmlns:dc=\"http://purl.org/dc/elements/1.1/\" \n";
                
$_rdf.="xmlns:content=\"http://purl.org/rss/1.0/modules/content/\">\n";
                
$_rdf.="<channel>\n";
                
$_rdf.="<title>".rss_encoding($title,true)."</title>\n";
                
$_rdf.="<description>Sistema Leimnud</description>\n";
                
$_rdf.="<link>".$linka."</link>\n";
                
$_rdf.="<dc:date>".date("Y-m-d")."</dc:date>\n";
                
$_rdf.="</channel>\n";
        }
        if(
$_formato=='rss')
        {
                
$_rss="<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
                
$_rss.="<rss version=\"2.0\" \n";
                
$_rss.="   xmlns:admin=\"http://webns.net/mvcb/\"\n";
                
$_rss.="   xmlns:ag=\"http://purl.org/rss/1.0/modules/aggregation/\"\n";
                
$_rss.="   xmlns:atom=\"http://purl.org/atom/ns\"\n";
                
$_rss.="   xmlns:annotate=\"http://purl.org/rss/1.0/modules/annotate/\"\n";
                
$_rss.="   xmlns:audio=\"http://media.tangent.org/rss/1.0/\"\n";
                
$_rss.="   xmlns:blogChannel=\"http://backend.userland.com/blogChannelModule\"\n";
                
$_rss.="   xmlns:cc=\"http://web.resource.org/cc/\"\n";
                
$_rss.="   xmlns:company=\"http://purl.org/rss/1.0/modules/company\"\n";
                
$_rss.="   xmlns:content=\"http://purl.org/rss/1.0/modules/content/\"\n";
                
$_rss.="   xmlns:cp=\"http://my.theinfo.org/changed/1.0/rss/\"\n";
                
$_rss.="   xmlns:creativeCommons=\"http://backend.userland.com/creativeCommonsRssModule\"\n";
                
$_rss.="   xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n";
                
$_rss.="   xmlns:dcterms=\"http://purl.org/dc/terms/\"\n";
                
$_rss.="   xmlns:email=\"http://purl.org/rss/1.0/modules/email/\"\n";
                
$_rss.="   xmlns:ev=\"http://purl.org/rss/1.0/modules/event/\"\n";
                
$_rss.="   xmlns:geo=\"http://www.w3.org/2003/01/geo/wgs84_pos#\"\n";
                
$_rss.="   xmlns:geourl=\"http://geourl.org/rss/module/\"\n";
                
$_rss.="   xmlns:icbm=\"http://postneo.com/icbm\"\n";
                
$_rss.="   xmlns:image=\"http://purl.org/rss/1.0/modules/image/\"\n";
                
$_rss.="   xmlns:itunes=\"http://www.itunes.com/DTDs/Podcast-1.0.dtd\"\n";
                
$_rss.="   xmlns:l=\"http://purl.org/rss/1.0/modules/link/\"\n";
                
$_rss.="   xmlns:foaf=\"http://xmlns.com/foaf/0.1/\"\n";
                
$_rss.="   xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n";
                
$_rss.="   xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\"\n";
                
$_rss.="   xmlns:ref=\"http://purl.org/rss/1.0/modules/reference/\"\n";
                
$_rss.="   xmlns:reqv=\"http://purl.org/rss/1.0/modules/richequiv/\"\n";
                
$_rss.="   xmlns:rss091=\"http://purl.org/rss/1.0/modules/rss091#\"\n";
                
$_rss.="   xmlns:search=\"http://purl.org/rss/1.0/modules/search/\"\n";
                
$_rss.="   xmlns:slash=\"http://purl.org/rss/1.0/modules/slash/\"\n";
                
$_rss.="   xmlns:ss=\"http://purl.org/rss/1.0/modules/servicestatus/\"\n";
                
$_rss.="   xmlns:str=\"http://hacks.benhammersley.com/rss/streaming/\"\n";
                
$_rss.="   xmlns:sub=\"http://purl.org/rss/1.0/modules/subscription/\"\n";
                
$_rss.="   xmlns:sy=\"http://purl.org/rss/1.0/modules/syndication/\"\n";
                
$_rss.="   xmlns:taxo=\"http://purl.org/rss/1.0/modules/taxonomy/\"\n";
                
$_rss.="   xmlns:thr=\"http://purl.org/rss/1.0/modules/threading/\"\n";
                
$_rss.="   xmlns:wiki=\"http://purl.org/rss/1.0/modules/wiki/\"\n";
                
$_rss.="   xmlns:xhtml=\"http://www.w3.org/1999/xhtml\">\n";
                
$_rss.="<channel>\n";
                
$_rss.="<title>".rss_encoding($title,true)."</title>\n";
                
$_rss.="<link>".$linka."</link>\n";
                
$_rss.="<description>Sistema Leimnud</description>\n";
                
$_rss.="<docs>http://backend.userland.com/rss</docs>\n";
                
$_rss.="<generator>Leimnud RSS Creator</generator>\n";
                
$_rss.="<copyright>maborak.design</copyright>\n";
                
$_rss.="<webMaster>[email protected]</webMaster>\n";
                
$_rss.="<dc:language>en-us</dc:language>\n";
                
$_rss.="<dc:creator>Me ([email protected])</dc:creator>\n";
                
$_rss.="<dc:rights>Copyright 2005 Me</dc:rights>\n";
                
$_rss.="<dc:date>".date("Y-m-d")."</dc:date>\n";
                
$_rss.="<admin:generatorAgent rdf:resource=\"http://www.movabletype.org/?v=2.5\" />\n";
                
$_rss.="<admin:errorReportsTo rdf:resource=\"mailto:[email protected]\"/>\n";
        }
        while (
$l=mysql_fetch_array($_rss_query)) {
                if(
$_formato=='atom')
                {
                        
$_atom.="<entry>\n";
                        
$_atom.="<title>[".rss_encoding(CATEGORIA_pedircategoria($l['categoria']),true)."]-".rss_encoding($l['titulo'],true)."</title>\n";
                        
$_atom.="<link rel=\"alternate\" type=\"text/html\" href=\"http://".implode("/",$ty)."/".VER_PROCESADOR."&amp;articulo=".$l['ID']."\"/>\n";
                        
$_atom.="<issued>".$l['fecha']."</issued>\n";
                        
$_atom.="<modified>".$l['fecha']."</modified>\n";
                        
$_atom.="</entry>\n";
                }
                if(
$_formato=='rdf')
                {
                        
$_rdf.="<item>\n";
                        
$_rdf.="<title>[".rss_encoding(CATEGORIA_pedircategoria($l['categoria']),true)."]-".rss_encoding($l['titulo'],true)."</title>\n";
                        
$_rdf.="<link>http://".implode("/",$ty)."/".VER_PROCESADOR."&amp;articulo=".$l['ID']."</link>\n";
                        
$_rdf.="<content:encoded><![CDATA[
                                <style type=\"text/css\">
                                       @import url("
.$_link."white.linux.css);
                                </style>
                                <div  style=\"font-size:8pt;color:#000000;\">"
.salida(rss_encoding($l['articulo_preview'],false)).rss_encoding(ARTICULO_attach_files($l['ID']),false)."</div>
                                ]]></content:encoded>\n"
;
                        
$_rdf.="<dc:date>".$l['fecha']."</dc:date>\n";
                        
$_rdf.="</item>\n";
                }
                if(
$_formato=='rss')
                {
                        
$_rss.="<item>\n";
                        
$_rss.="<title>[".rss_encoding(CATEGORIA_pedircategoria($l['categoria']),true)."]-".rss_encoding($l['titulo'],true)."</title>\n";
                        
$_rss.="<category>".rss_encoding(CATEGORIA_pedircategoria($l['categoria']),true)."</category>\n";
                        
$_rss.="<link>http://".implode("/",$ty)."/".VER_PROCESADOR."&amp;articulo=".$l['ID']."</link>\n";
                        
$_rss.="<description>".rss_encoding($l['titulo'],true)."</description>\n";
                        
$_rss.="<content:encoded><![CDATA[
                                <style type=\"text/css\">
                                       @import url("
.$_link."white.linux.css);
                                </style>
                                <div  style=\"font-size:8pt;color:#000000;\">"
.salida(rss_encoding($l['articulo_preview'],false)).rss_encoding(ARTICULO_attach_files($l['ID']),false)."</div>
                                ]]></content:encoded>\n"
;
                        
$_rss.="<dc:subject>".rss_encoding(CATEGORIA_pedircategoria($l['categoria']),true)."</dc:subject>\n";
                        
$_rss.="<dc:date>".$l['fecha']."</dc:date>\n";
                        
$_rss.="</item>\n";
                }

        }

        if(
$_formato=='atom')
        {
                
$_atom.="</feed>";
                return 
$_atom;
        }
        if(
$_formato=='rdf')
        {
                
$_rdf.="</rdf:RDF>";
                return 
$_rdf;
        }
        if(
$_formato=='rss')
        {
                
$_rss.="</channel>\n";
                
$_rss.="</rss>";
                return 
$_rss;
        }
        return 
false;
}

connection closed.
__________________

Maborak Technologies
  #5 (permalink)  
Antiguo 28/07/2005, 15:11
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 14 años, 7 meses
Puntos: 35
loading..............


Y así procedo a lanzar el rss

file: sindicar_procesador.php
Código PHP:
<?php
include("kernel.php");
logger_live();
/***************************************************************************
*                         sindicar.php
*                            -------------------
*   copyright            : (C) 2004 maborak design
*   email                : [email protected]
*   Revision Actual      : $Revision: 1.18 $
*   Ultima Modificacion  : $Date: 2005/05/15 00:36:35 $
*
*
***************************************************************************/

/***************************************************************************
*   This program is free software; you can redistribute it and/or modify
*   it under the terms of the GNU General Public License as published by
*   the Free Software Foundation; either version 2 of the License, or
*   (at your option) any later version.
***************************************************************************/
if(isset($_GET['sindicar']))
{
/**************************************************************************
* Definir formatos de sindicacion BEGIN
**************************************************************************/
$_formatos_de_RSS[]="rss";
$_formatos_de_RSS[]="rdf";
$_formatos_de_RSS[]="atom";
define("FORMATO",(in_array($_GET['sindicar'],$_formatos_de_RSS))?$_GET['sindicar']:"rss");
/**************************************************************************
* Definir formatos de sindicacion END
**************************************************************************/
/**************************************************************************
* Definir forma, nuevos-actualizados BEGIN
**************************************************************************/
$_forma[]="nuevo";
$_forma[]="actualizado";
if(isset(
$_GET['forma']) )
{
define("RSS_FORMA",(in_array($_GET['forma'],$_forma))?$_GET['forma']:$_forma[0]);
}
else
{
define("RSS_FORMA",$_forma[0]);
}
/**************************************************************************
* Definir forma, nuevos-actualizados END
**************************************************************************/
/**************************************************************************
* Definir por cat BEGIN
**************************************************************************/
if(isset($_GET['categoria']) )
{
define("RSS_CATEGORIA",(CATEGORIA_existe_ID($_GET['categoria'])==true)?$_GET['categoria']:false);
$_title_cat=(RSS_CATEGORIA==false)?"":"[".CATEGORIA_pedircategoria(RSS_CATEGORIA)."]";
}
else
{
define("RSS_CATEGORIA",false);
$_title_cat="";
}
/**************************************************************************
* Definir por cat END
**************************************************************************/



/*******************************************************************************
*Armando la consulta SQL BEGIN
*******************************************************************************/
$__c=(RSS_CATEGORIA==false)?" ":" WHERE categoria=".RSS_CATEGORIA;
if(
RSS_FORMA=='nuevo')
{
$__a="ID";
$_sub="[news]";
}
elseif(
RSS_FORMA=='actualizado')
{
$__a="ultimo_update";
$_sub="[updates]";
}

$_consulta_rss="SELECT * FROM ".ARTICULOS." ".$__c." ORDER BY ".$__a." DESC LIMIT ".LIMIT_RSS_WRITE;




$rss_query=SQL_query($_consulta_rss,file_name(),__LINE__);
/*******************************************************************************
*Armando la consulta SQL END
*******************************************************************************/

$titulo_rss=$_sub.$_title_cat."Leimnud";




/**************************************************************************
* Lanzamos sindicacion BEGIN
**************************************************************************/
if(FORMATO=='rss')
{
$_texto=rss_enviar("rss",$rss_query,"RSS-".$titulo_rss);
}
if(
FORMATO=='rdf')
{
$_texto=rss_enviar("rdf",$rss_query,"RDF-".$titulo_rss);
}
if(
FORMATO=='atom')
{
$_texto=rss_enviar("atom",$rss_query,"ATOM-".$titulo_rss);
}
header("Accept-Ranges: bytes");
header("Content-Length: ".strlen($_texto));
header("Content-Type: text/xml");
header("Pragma: public");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Disposition: inline; filename=\"".FORMATO.".xml\";");
echo 
$_texto;
/**************************************************************************
* Lanzamos sindicacion END
**************************************************************************/
}
else
{
header("Location: ".INDEX);
exit();
}
?>

... dudas, hazmela saber con gusto ayudaré



connection closed.
__________________

Maborak Technologies
  #6 (permalink)  
Antiguo 29/07/2005, 03:00
Dig
 
Fecha de Ingreso: enero-2005
Mensajes: 60
Antigüedad: 12 años, 11 meses
Puntos: 0
Hola Maborak.

Muchas gracias por tus respuestas...
dudas?... todas.... jejejejejeje

No, en serio, te cuento...
No estoy muy puesto en PHP y en RSS también llevo poco tiempo informandome, aunque te puedo asegurar que llevo bastantes págians leidas sobre el tema.

El caso es que he estado pegando un vistazo a los ficheros que has publicado y también a tu web y precisamente esto es lo que quiero. Lo que pasa es que debido a mis pobres conocimientos de PHP no se como hacerlo yo a pesar de ver el códigoq ue me envias. Te detallo un poco más punto por punto mis dudas:

1. Entiendo que el primer codigo es una página PHP que lo que hace es leer de la base de datos y genera el RSS, RDF o Atom pero...
- ¿como hago para que lea mi base de datos?
- Debo guardar esta página como una página PHP y situarla donde?
- No entiendo como hacer "//nota la funcion salida() la debes modificar porque es mi funcion para formatear en html toda la salida". He estado mirando la función y no se como hacerlo

2. la página sindicar_procesador.php es la que genera la pagina de tu web con todas las categorias que se pueden sindicar ¿no? Por cierto, esta muy chula la página, la verdad es que es justo lo que quiero. En mi página, en principio, no hace falta que este tan currado, ya que no tengo muchas categorias pero esta muy bien saber como hacerlo.

En conclusión. Creoq ue esto es lo que necesito pero no se como aplicarlo. Mis conocimiento de PHP y XML son justitos. Si pudieses explicarmelo más claramente te lo agardeceria.

Venga, un saluo y muchas gracias
  #7 (permalink)  
Antiguo 01/08/2005, 15:35
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 14 años, 7 meses
Puntos: 35
loading..........


bueno todo desde cero.

Objetivo: vamos a generar un RSS 2.0

Imagino que la forma en que muestras tus articulos y/o noticias es de la siguiente manera.

Código PHP:
/*
se entiende que ya hiciste conexion a tu base de datos

*/
$a=mysql_query("SELECT * FROM mi_tabla_articulos"); 
Esto te devolverà

noticia 1 autor=chapulin

la noticia dice que bla bla bla
--------------------------------
noticia 2 autor=chapulin

la noticia dice que bla bla bla
-----------------------------
noticia 3 autor=chapulin

la noticia dice que bla bla bla

Entonces esas salidas vamos a ponerlas como ITEMS un item es lo que RSS toma como el cuerpo de RSS

<item>algo 1</item>
<item>algo 2</item>
<item>algo 3</item>

ahì tenemos 3 items, es ahì a donde tenemos que llegar

para eso vamos a crear una funcion para no liarnos.

1.- guardamos la consulta en una variable

Código PHP:
$_to_rss=mysql_query("SELECT * FROM tabla_de_noticias ORDER BY ID DESC LIMIT 100"); 
nada mas, ahora creamos la funcion

Código PHP:
//aunque es poco recomendado pondremos todas las etiquetas que correspondan
//y asì hacer manejable el RSS casi al 100%
function rss_enviar($_rss_query,$title) 

                $_rss="<?xml version="1.0\" encoding=\"utf-8\"?>\n"
                
$_rss.="<rss version=\"2.0\" \n"
                
$_rss.="   xmlns:admin=\"http://webns.net/mvcb/\"\n"
                
$_rss.="   xmlns:ag=\"http://purl.org/rss/1.0/modules/aggregation/\"\n"
                
$_rss.="   xmlns:atom=\"http://purl.org/atom/ns\"\n"
                
$_rss.="   xmlns:annotate=\"http://purl.org/rss/1.0/modules/annotate/\"\n"
                
$_rss.="   xmlns:audio=\"http://media.tangent.org/rss/1.0/\"\n"
                
$_rss.="   xmlns:blogChannel=\"http://backend.userland.com/blogChannelModule\"\n"
                
$_rss.="   xmlns:cc=\"http://web.resource.org/cc/\"\n"
                
$_rss.="   xmlns:company=\"http://purl.org/rss/1.0/modules/company\"\n"
                
$_rss.="   xmlns:content=\"http://purl.org/rss/1.0/modules/content/\"\n"
                
$_rss.="   xmlns:cp=\"http://my.theinfo.org/changed/1.0/rss/\"\n"
                
$_rss.="   xmlns:creativeCommons=\"http://backend.userland.com/creativeCommonsRssModule\"\n"
                
$_rss.="   xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n"
                
$_rss.="   xmlns:dcterms=\"http://purl.org/dc/terms/\"\n"
                
$_rss.="   xmlns:email=\"http://purl.org/rss/1.0/modules/email/\"\n"
                
$_rss.="   xmlns:ev=\"http://purl.org/rss/1.0/modules/event/\"\n"
                
$_rss.="   xmlns:geo=\"http://www.w3.org/2003/01/geo/wgs84_pos#\"\n"
                
$_rss.="   xmlns:geourl=\"http://geourl.org/rss/module/\"\n"
                
$_rss.="   xmlns:icbm=\"http://postneo.com/icbm\"\n"
                
$_rss.="   xmlns:image=\"http://purl.org/rss/1.0/modules/image/\"\n"
                
$_rss.="   xmlns:itunes=\"http://www.itunes.com/DTDs/Podcast-1.0.dtd\"\n"
                
$_rss.="   xmlns:l=\"http://purl.org/rss/1.0/modules/link/\"\n"
                
$_rss.="   xmlns:foaf=\"http://xmlns.com/foaf/0.1/\"\n"
                
$_rss.="   xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n"
                
$_rss.="   xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\"\n"
                
$_rss.="   xmlns:ref=\"http://purl.org/rss/1.0/modules/reference/\"\n"
                
$_rss.="   xmlns:reqv=\"http://purl.org/rss/1.0/modules/richequiv/\"\n"
                
$_rss.="   xmlns:rss091=\"http://purl.org/rss/1.0/modules/rss091#\"\n"
                
$_rss.="   xmlns:search=\"http://purl.org/rss/1.0/modules/search/\"\n"
                
$_rss.="   xmlns:slash=\"http://purl.org/rss/1.0/modules/slash/\"\n"
                
$_rss.="   xmlns:ss=\"http://purl.org/rss/1.0/modules/servicestatus/\"\n"
                
$_rss.="   xmlns:str=\"http://hacks.benhammersley.com/rss/streaming/\"\n"
                
$_rss.="   xmlns:sub=\"http://purl.org/rss/1.0/modules/subscription/\"\n"
                
$_rss.="   xmlns:sy=\"http://purl.org/rss/1.0/modules/syndication/\"\n"
                
$_rss.="   xmlns:taxo=\"http://purl.org/rss/1.0/modules/taxonomy/\"\n"
                
$_rss.="   xmlns:thr=\"http://purl.org/rss/1.0/modules/threading/\"\n"
                
$_rss.="   xmlns:wiki=\"http://purl.org/rss/1.0/modules/wiki/\"\n"
                
$_rss.="   xmlns:xhtml=\"http://www.w3.org/1999/xhtml\">\n"
                
$_rss.="<channel>\n"
                
$_rss.="<title>".rss_encoding($title)."</title>\n"
                
$_rss.="<link>http://tuweb.com/</link>\n"
                
$_rss.="<description>Sistema Leimnud</description>\n"
                
$_rss.="<docs>http://backend.userland.com/rss</docs>\n"
                
$_rss.="<generator>Leimnud RSS Creator</generator>\n"
                
$_rss.="<copyright>maborak.design</copyright>\n"
                
$_rss.="<webMaster>[email protected]</webMaster>\n"
                
$_rss.="<dc:language>en-us</dc:language>\n"
                
$_rss.="<dc:creator>Me ([email protected])</dc:creator>\n"
                
$_rss.="<dc:rights>Copyright 2005 Me</dc:rights>\n"
                
$_rss.="<dc:date>".date("Y-m-d")."</dc:date>\n"
                
$_rss.="<admin:generatorAgent rdf:resource=\"http://www.movabletype.org/?v=2.5\" />\n"
                
$_rss.="<admin:errorReportsTo rdf:resource=\"mailto:[email protected]\"/>\n"
        } 
        while (
$l=mysql_fetch_array($_rss_query)) { 
//se tomarà en cuenta que las columnas son la siguientes
// titulo = el titulo
// descripcion= una pequeña descripcion de la noticia
// autor = el autor
//fecha = la fecha de publicacion
// articulo = el articulo
// categria = categoria
// <link> este item debe apuntar a donde se ubica la noticia ejem: localhost//not.php?id=345345
                                      
$_rss.="<item>\n"
                        
$_rss.="<title>".rss_encoding($l['titulo'])."</title>\n"
                        
$_rss.="<link>http://tuweb.com/noticias.php?articulo=".$l['ID']."</link>\n"
                        
$_rss.="<description>".rss_encoding($l['articulo'])."</description>\n"
                        
$_rss.="<dc:subject>".rss_encoding($l['categoria'])."</dc:subject>\n"
                        
$_rss.="<dc:date>".$l['fecha']."</dc:date>\n"
                        
$_rss.="</item>\n"


        } 

$_rss.="</channel>\n"
                
$_rss.="</rss>"
                return 
$_rss

//haremos otra funcion para facilitar muchas cosas
function rss_encoding($a)
{
return 
utf8_encode($a);
}
ahora bien

$_rss_query = es el resultado del query que hicimos para ver las noticias
$title= es el titulo del rss

el retorno serà un texto en formato RSS

entonces para que genere el XML y que lectores RSS lo reconoscan lo que nos falta hacer es poner las cabeceras.

bueno ahora el codigo completo

si a tu pagina acceden con
http://tuweb.com/sindicar.php
Código PHP:
$rss_query("SELECT * FROM mi_tabla_noticias ORDER BY ID DESC LIMIT 100")
$_texto=rss_enviar($rss_query,"mi rss"); 
header("Accept-Ranges: bytes"); 
header("Content-Length: ".strlen($_texto)); 
header("Content-Type: text/xml"); 
header("Pragma: public"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Disposition: inline; filename=\"rss.xml\";"); 
echo 
$_texto

espero te orieente un poco de como se hace


connection closed.
__________________

Maborak Technologies
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:33.