Foros del Web » Programando para Internet » PHP »

Actualizar noticias y rss

Estas en el tema de Actualizar noticias y rss en el foro de PHP en Foros del Web. Hola, me gustaria saber o si me pudieran dar alguna idea de como poder actualizar un archivo rss (xml) cada vez que inserto , edito ...
  #1 (permalink)  
Antiguo 26/07/2006, 13:51
 
Fecha de Ingreso: diciembre-2002
Mensajes: 473
Antigüedad: 21 años, 11 meses
Puntos: 0
Actualizar noticias y rss

Hola, me gustaria saber o si me pudieran dar alguna idea de como poder actualizar un archivo rss (xml) cada vez que inserto , edito o borro una noticia.

En el codigo ese proceso lo haog en un archivo llamado syndicate.php y para eso uso la libreria de clases feedcreator.

En el a chivo que procesa hago un switch y por ejemplo en el caso del delte:

case "delete":
$sql_del="DELETE FROM news WHERE id =".$elid;
$result_del=mysql_db_query($database,$sql_del) or die(mysql_error());
if ($result_del){
$mensaje = "This news item was deleted with success";
include("syndicate.php");
}
break;

El problema es que cada vez que llamo al archivo se me 'destartala" todo.
Tiene idea de alguna solucion? Gracias desde ya!
  #2 (permalink)  
Antiguo 26/07/2006, 14:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Habría que ver que hace "syndicate.php" .. de donde toma los datos .. como los genera .. como para ver si realmente va a mirar a tu BBDD (tabla news) y dispara la generación del XML o que hace ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 26/07/2006, 15:11
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 20 años, 2 meses
Puntos: 5
Hola,

En mi caso, por ejemplo para Tecnopedia.com, yo tengo en la raiz del sitio un archivo llamado index.xml. Ese archivo es generado cuando yo ejecuto rssfeed.php el cual simplemente escribre sobre index.xml las ultimas 10 noticias que hay en la base de datos. Esto implica que cada que yo hago un cambio en el sitio debo ejecutar rssfeed.php.

Este procedimiento puede ser mas facil para ti si simplemente ejecutaras el codigo que escribe sobre el archivo xml cada que haces una modificación sobre tus noticias. Sin embargo, para ayudarte necesitamos un poco mas de información tal como Cluster te acaba de comentar.

Un saludo,
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #4 (permalink)  
Antiguo 26/07/2006, 15:53
 
Fecha de Ingreso: diciembre-2002
Mensajes: 473
Antigüedad: 21 años, 11 meses
Puntos: 0
Codigo

Gracias por las respuestas amigos.Paso entonces a mostrarles el codigo php de syndicate.php a ver que les parece:
Código PHP:
<? 
include("feedcreator.class.php"); 

$rss = new UniversalFeedCreator(); 

$rss->title "xxxxxxxx"

$rss->description "xxxxxxxx"

$rss->link "http://www.xxxxxxx.com/"

$rss->syndicationURL "http://www.xxxxxxx.com/".$PHP_SELF

$db mysql_connect("xxx","xxxx","xxxxxxxxx");

mysql_select_db("xxxxxxxxxx",$db);

$content_sql "SELECT * FROM news ORDER by date desc";

$content_result mysql_query($content_sql);

while (
$newsitem mysql_fetch_array($content_result)) { 
    
$item = new FeedItem(); 
    
    
$item->title $newsitem["title"]; 
    
    
$item_link "http://www.xxxxxxxxxxx.com/newsitem.php?id=".$newsitem["id"];
    
    
$item->link $item_link;
    
    
$description1 substr($newsitem["text"], 0250);
    
    
$description  strip_tags($description1);
    
    if (
strlen($description) > 250) {
    
        
$description $description "....";
        
    }
    
    
$item->description $description
    
    
$rss->addItem($item); 


$rss->saveFeed("RSS2.0""rss.xml"); 
 
?>
Tendra alguna solucion esto?
Gracias desde ya!
  #5 (permalink)  
Antiguo 26/07/2006, 16:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Según parece el código que presentas al ejecutarlo generas tu RSS con los datos de lo que tenga tu tabla "news" de tu BBDD.

Por cierto:
$result_del=mysql_db_query($database,$sql_del) or die(mysql_error());
if ($result_del){

ese "if()" así no sirve de mucho . .tu ya haces el "or die" .. así que nunca llegaras ahí a ese if con un valor "false" .. siempre con un "true" .. por qué si es "false" tu "or die" ya para la ejecución del script ahí mismo y tira el mysql_error()

Lo único que se observa es que ese código conecta a tu BBDD, selecciona una BBDD y hace una consulta SQL a tu BBDD. En tu código que lo llama (ese "case" de tu switch()) ya conectastes a tu BBDD y seleccionastes la BBDD donde tratabajar antes .. así que no correspondería nuevamente hacer ese mismo proceso al menos.


Seguimos un poco en las mismas que antes .. ahí usas tal classe para generar el RSS .. realmente no todo el mundo la usa .. así que lo recomendable es que indiques donde obtenerla para que la gente vea su código, su manual de usuario y pueda si tiene tiempo probarlo.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 27/07/2006, 09:16
 
Fecha de Ingreso: diciembre-2002
Mensajes: 473
Antigüedad: 21 años, 11 meses
Puntos: 0
Gracias

Gracias por la respuesta Cluster.Arreglare esas cosas.En cuanto al tema de la clase rss tenia entendido era de las mejores.Tienen alguna otra para aconsejarme? Tambien vere de probar con Atom.

Como encararias tu (o otro forero) este proceso? En realidad es mi primer desarrollo con rrs y no tengo experiencia.

Takitei, tienes algun codigo similar de referencia al que tu me dices? A mi me interesa aprender esto, no efectuar un copy and paste, pero de verdad no encuentro algo similar buscando en google y supongo debe ser algo bastante usual.
Bueno, gracias desde ya amigos.
  #7 (permalink)  
Antiguo 27/07/2006, 10:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Como encararias tu (o otro forero) este proceso? En realidad es mi primer desarrollo con rrs y no tengo experiencia.
Para mi está bien como realizas el proceso. Es decir .. ante un "ingreso" de datos o "eliminación" .. disparar el código que genera tu RSS. Si no lo hace bien en ese caso ... realmente no sé por qué será (no tengo oportunidad de probar en las mismas condiciones que tu tu código y datos que usas ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 28/07/2006, 11:16
 
Fecha de Ingreso: diciembre-2002
Mensajes: 473
Antigüedad: 21 años, 11 meses
Puntos: 0
Desorden

Pude generar bien el rss con un codigo propio (tla como me decia Cluster lo preferi a algo externo).Anduvo bien aunque aun no lo probe cuando actualizo las news.El problema es que se editan las news con Fckeditor, y cuando debo emitir el rss se desordena el codigo, use htmlentities() y strip_tags(), e incluso las dos juntas, pero sin suerte:

$description = htmlentities(strip_tags($description_sinprocesar)) ;

Donde puede estar la solucion?
Saludos!
  #9 (permalink)  
Antiguo 28/07/2006, 11:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por tico74
Pude generar bien el rss con un codigo propio (tla como me decia Cluster lo preferi a algo externo).Anduvo bien aunque aun no lo probe cuando actualizo las news.El problema es que se editan las news con Fckeditor, y cuando debo emitir el rss se desordena el codigo, use htmlentities() y strip_tags(), e incluso las dos juntas, pero sin suerte:

$description = htmlentities(strip_tags($description_sinprocesar)) ;

Donde puede estar la solucion?
Saludos!
Haber empezado por ahí!!!! ..

Cara al formato RSS lo que se solicita son datos "puros" sin "adornos" de HTML por médio ni formato ni nada más. Por qué justamente una vez leido tus datos de una fuente en XML .. ya le daras formato con XLS o por otros médios ..

DEBES quitar todo rastro de HTML de tus noticias (datos) y dejarlo como "texto plano". Eso podrías hacerlo con strip_tags() -sólo- .. Pero como ya tendras tus saltos de línea y cosas así ahí es normal que te quede desordenado todo.

Te recomendaría que Sindicases sólo en RSS los "títulos" de tus noticias .. y las dejes en texto plano -sólo- .. El contenido o intruducción de la noticia si lo vas a "sindicar" (en RSS) mejor toma un sólo parrafo .. o destina otro campo como para indicar ahí un resumen de la noticia o similar.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 28/07/2006, 12:27
 
Fecha de Ingreso: diciembre-2002
Mensajes: 473
Antigüedad: 21 años, 11 meses
Puntos: 0
Mil gracias Cluster, tu siempre estas ahi. Si, el tema es que me exigen sindique todos los contenidos y ellos usan FCKEditor. Ahora probe y use Cdata, en esta forma:
<description><![CDATA['.$description2.']]></description>
por si a a alguno le sirve,esto es como que "encodea" los contenidos. El unico problema parece ser que debo volcar ese "echo" en un archivo llamado rss.xml. Pero no sé bien como hacerlo aun.
  #11 (permalink)  
Antiguo 28/07/2006, 12:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Ahí ya me perdí por completo .. Además de FCKEditor usan "Ajax"? .. (por el "CDATA" me "suena" ...)

En tal caso como digo ya me perdí mucho .. Y lo peor es que tu vas dando información de tu situación concreta en cuentagotas!!!. Tal vez si te ordenas tu mismo, resumes las condiciones de pruebas y situación concreta y la expones en el foro será más facil que alguien pueda ayudarte. Por mi parte no puedo hacer más que recomendarte lo que te he mencionado ya.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #12 (permalink)  
Antiguo 28/07/2006, 12:46
 
Fecha de Ingreso: diciembre-2002
Mensajes: 473
Antigüedad: 21 años, 11 meses
Puntos: 0
No, Cluster, no usan Ajax, es un rss normal. Lei y me recomendaron usara eso (Cdata) para neutralizar las descripciones.
No es que este desordenado, el desarrollo ya esta hecho y todo parece salir bien.Ahora solo estoy buscando como "enviar" ese contenido o archivo xml generado por php creando un archivo xml en el servidor.
Te dejo un saludo
  #13 (permalink)  
Antiguo 28/07/2006, 12:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Ok, entonces el problema principal sobre tu "desorden" se solventó con el "CDATA" sólo? (como para ir cerrando temas y que esto le sirva a alguien más si está en esos problemas).

Sobre el otro problema .. ¿Tu ya generas todo el RSS .. aunque sea sobre una variable .. con la estructura que corresponde a un formato RSS (versión que uses ..)?

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #14 (permalink)  
Antiguo 28/07/2006, 13:10
 
Fecha de Ingreso: diciembre-2002
Mensajes: 473
Antigüedad: 21 años, 11 meses
Puntos: 0
Si, si, esta cerrado. Por eso recomendaba usar Cdata y tal como tu decias usar el texto plano. O bien que lo depuren con esa funcion.
En este momento hacia un echo, pero estaba pensando volcarlo a una variable para poder guardarlo en el server como un xml, supongo que con alguna de las funciones para crear ficheros?
Saludos
  #15 (permalink)  
Antiguo 28/07/2006, 13:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por tico74
Si, si, esta cerrado. Por eso recomendaba usar Cdata y tal como tu decias usar el texto plano. O bien que lo depuren con esa funcion.
En este momento hacia un echo, pero estaba pensando volcarlo a una variable para poder guardarlo en el server como un xml, supongo que con alguna de las funciones para crear ficheros?
Saludos
fopen() y afines .. una vez que tengas todo compuesto en una $varible es simple crear el archivo (fwrite($fp,$variable) ...

www.php.net/fopen

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #16 (permalink)  
Antiguo 28/07/2006, 13:26
 
Fecha de Ingreso: diciembre-2002
Mensajes: 473
Antigüedad: 21 años, 11 meses
Puntos: 0
Voy a ver de crearlo asi.Te dejo un saludo y gracias de nuevo.
  #17 (permalink)  
Antiguo 29/07/2006, 09:24
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 20 años, 2 meses
Puntos: 5
Hola,

Este es el código que yo uso para generar mi feed:

Código PHP:
<?php
include('dbconn.php');
$ssql="SELECT * FROM news ORDER by idN DESC LIMIT 0,20";
$rs=mysql_query($ssql);

//Se genera el archivo .doc que puede ser descargado
$doc="<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\r";
$doc.="<rss version=\"2.0\">\r";
$doc.="<channel>\r";
$doc.="<title>Tecnopedia.com - más noticias, otro estilo</title>\r";
$doc.="<link>http://www.tecnopedia.com</link>\r";
$doc.="<description>Noticias tecno-informáticas con terminología definida.</description>\r";
$doc.="<language>es</language>\r";
$doc.="<image>\r";
$doc.="<url>http://www.tecnopedia.com/images/logo_header.gif</url>\r";
$doc.="<title>Tecnopedia.com - Versión RSS</title>\r";
$doc.="<link>http://www.tecnopedia.com</link>\r";
$doc.="</image>\r";

while(
$row=mysql_fetch_array($rs)){
  
$doc.="<item>\r";
  
$doc.="<title>".$row['title']."</title>\r";
  
$doc.="<link>http://www.tecnopedia.com/new".$row['idN']."</link>\r";
  
$doc.="<description>".$row['textN']."</description>\r";
  
$doc.="</item>\r";
}

$doc.="</channel>\r";
$doc.="</rss>";


//Carpeta donde guardar el archivo. Permisos 775
$folder="";
//Ruta del archivo a generar
$sfile=$folder."index.xml";
$fp=fopen($sfile,"w");
fwrite($fp,$doc);
fclose($fp);
?>
Simplemente ejecuto ese archivo y se genera index.xml que puedes ver en:

http://www.tecnopedia.com/index.xml

Saludos,
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
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 12:13.