Foros del Web » Programando para Internet » PHP »

por qué mi rss no muestra las noticias??

Estas en el tema de por qué mi rss no muestra las noticias?? en el foro de PHP en Foros del Web. Hola amig@s. En una de las webs que creé y mantengo me han pedido que integre un módulo rss. Encontré una forma muy sencillita de ...
  #1 (permalink)  
Antiguo 22/05/2010, 08:10
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
por qué mi rss no muestra las noticias??

Hola amig@s.

En una de las webs que creé y mantengo me han pedido que integre un módulo rss.

Encontré una forma muy sencillita de hacerlo en esta web
Código HTML:
http://www.davidbayon.net/index.php?mostrar=posts&post_id=239
Lo he hecho todo como se explica allí, generando este código final en rss.php
Código PHP:

<?php

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

?>

<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> 
<channel> 
<title><![CDATA[Titulo de mi Web]]></title> 
<link><![CDATA[http://www.miweb.com]]></link> 
<description><![CDATA[Descripción de mi web]]></description>
<language>es-es</language> 
<copyright><![CDATA[Mi empresa]]></copyright>
<atom:link href="http://www.miweb.com/rss.php" rel="self"
 type="application/rss+xml" />
<ttl>15</ttl> 

<image>
<url>http://www.miweb.com/images/logo.png</url>
<title>Mi Web</title>
<link>http://www.miweb.com</link>
</image>
<?
include('funciones.php');
$conexion conectar();

$consulta "Consulta que he probado en el phpmyadmin y va de maravilla";

$resultado mysql_query($consulta$conexion);
while(
$fila mysql_fetch_row($resultado))
{
    if(
$fila[1] == 5)
        
$enlace "Enlace si la sección de la noticia es 5";
    else
        
$enlace "Enlace si la sección de la noticia no es 5";
    echo
"<item>
        <pubDate><![CDATA[$fila[1]]]></pubDate>
        <title><![CDATA[$fila[2]]]> - <![CDATA[$fila[4]]]></title>
/*Nota, en el title pongo 2 CDATA(no se si es posible) para indicar el nombre de la sección y el título de la noticia, de todas formas, aunke ponga sólo 1 me sigue pasando lo mismo*/
        <link><![CDATA[$enlace]]></link>
        <description><![CDATA[$fila[5]]></description>
        <guid isPermaLink='true'><![CDATA[$enlace]]></guid>
        <author><![CDATA[[email protected]]]></author>
    </item>"
;
}
?>
</channel>

</rss>
Vale, parece todo correcto, y cuando pincho en el enlace habilitado en el index me dirige a donde debería dirigirme para io elegir qué lector de rss quiero utilizar.
En mi caso escojo google, ia que no ando sobrada de conocimientos sobre rss.
En iGoogle se me añade el link de mi nuevo rss, pero cuando pincho para verlo me dice que la web que he añadido no tiene elementos.
En la consulta lo que saco son todas las noticias de los 10 últimos días y como ia os digo, la consulta en el phpmyadmin da el resultado esperado.

¿Qué veis mal en mi código?

Gracias!!
  #2 (permalink)  
Antiguo 22/05/2010, 08:34
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 3 meses
Puntos: 36
Respuesta: por qué mi rss no muestra las noticias??

Por tu explicación, el navegador te interpretó bien el RSS, fue el lector quien no reconoció la fuente .... ¿cuál es "miweb.com"?, ¿cuál es el enlace donde tienes este RSS?.

Espero no lo hayas hecho localmente, o con un dominio falso ...
__________________
I ♥ The Music!
  #3 (permalink)  
Antiguo 22/05/2010, 09:07
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: por qué mi rss no muestra las noticias??

Gracias maturano.

No suelo dar los datos de las webs que creo cuando trabajo en empresas.
Pero este caso va a ser una excepción ia que necesito dejar zanjado este tema para seguir con lo que estoy realizando en estos momentos.

miweb.com es
Código HTML:
http://www.diariosigno.com
y el enlace sería 'http://www.diariosigno.com/rss.php' obviamente.

Ahora mismo le he quitado el botón de suscripciones ia que la página esta lanzada pero este servicio no funciona.

No veis ningún otro faio que pueda haber?? Si hace falta que vuelva a mostrar el botón decídmelo y lo haré de momento.

Gracias de nuevo.
  #4 (permalink)  
Antiguo 22/05/2010, 09:11
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: por qué mi rss no muestra las noticias??

Te expongo una forma sencilla de crear RSS
Código PHP:
Ver original
  1. <?php
  2. class rss2 extends DOMDocument {
  3.     private $channel;
  4.     public function __construct($title, $link, $description) {
  5.         parent::__construct();
  6.         $this->formatOutput = true;
  7.         $root = $this->appendChild($this->createElement('rss'));
  8.         $root->setAttribute('version', '2.0');
  9.         $channel= $root->appendChild($this->createElement('channel'));
  10.         $channel->appendChild($this->createElement('title', $title));
  11.         $channel->appendChild($this->createElement('link', $link));
  12.         $channel->appendChild($this->createElement('description', $description));
  13.         $this->channel = $channel;
  14.     }
  15.  
  16.     public function addItem($title, $link, $description) {
  17.         $item = $this->createElement('item');
  18.         $item->appendChild($this->createElement('title', $title));
  19.         $item->appendChild($this->createElement('link', $link));
  20.         $item->appendChild($this->createElement('description', $description));
  21.         $this->channel->appendChild($item);
  22.     }
  23. }
  24.  
  25. $rss = new rss2('Foros del web', 'http://www.forosdelweb.com/f18/','Foro de PHP');
  26. $rss->addItem('foo', 'http://www.example.org/foo','foo Descripción');
  27. $rss->addItem('bar', 'http://www.example.org/bar','bar Descripción');
  28. echo $rss->saveXML();
Esto escribirá
Código XML:
Ver original
  1. <?xml version="1.0"?>
  2. <rss version="2.0">
  3.   <channel>
  4.     <title>Foros del web</title>
  5.     <link>http://www.forosdelweb.com/f18/</link>
  6.     <description>Foro de PHP</description>
  7.     <item>
  8.       <title>foo</title>
  9.       <link>http://www.example.org/foo</link>
  10.       <description>foo Descripci</description>
  11.     </item>
  12.     <item>
  13.       <title>bar</title>
  14.       <link>http://www.example.org/bar</link>
  15.       <description>bar Descripci</description>
  16.     </item>
  17.   </channel>
  18. </rss>
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 22/05/2010, 09:37
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: por qué mi rss no muestra las noticias??

Gracias abimaelrc.

Tu código me genera 1 resultado(solamente 1 de la consulta, cuando deberían ser 19), pero además, no traduce el $fila[x], sino que me muestra como título $fila[2] - $fila[4] y como cabecera $fila[5]. Además, cuando pulso en la cabecera, al no leer el enlace no me muestra más que missing.

He probado cambiar las comillas simples por las dobles, pero entonces me genera un warning en la línea 18 espantoso.
Código PHP:
$item->appendChild($this->createElement('link'$link)); 
Mi código con el que genero los items ahora mismo es
Código PHP:
...
while(
$fila mysql_fetch_row($resultado))
{
    if(
$fila[1] == 5)
        
$enlace "enlace si $fila[1] es 5";
    else
        
$enlace "enlace si $fila[1] no es 5";
$rss->addItem('$fila[2] - $fila[4]''$enlace','$fila[5]');
}
echo 
$rss->saveXML(); 
  #6 (permalink)  
Antiguo 22/05/2010, 09:59
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: por qué mi rss no muestra las noticias??

Tu problema es de comilla
Código PHP:
Ver original
  1. while($fila = ....){
  2.     if($fila[1] == 5)
  3.         $enlace = "enlace si $fila[1] es 5";
  4.     else
  5.         $enlace = "enlace si $fila[1] no es 5";
  6.     $rss->addItem($fila[2] . ' - ' . $fila[4], $enlace, $fila[5]);
  7. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 22/05/2010, 10:11
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: por qué mi rss no muestra las noticias??

Yo tampoco lo he entendido hasta que me he fijado bien en el código(perdona, pero esto de no descansar ni en fin de semana le deja a uno cao).

Al parecer el problema lo da en la función addItem, tanto si le pongo comillas dobles(estaría enviando el contenido) tanto si no les pongo.
El error que me da es
Warning: DOMDocument::createElement() [function.DOMDocument-createElement]: unterminated entity reference parameter=15796&menu=muestraMenu&pmenu=2 in rss2.php on line 18
Esta línea crea el item del link
Código PHP:
 $item->appendChild($this->createElement('link'$link)); 
Por lo tanto el problema está en el enlace que le paso para que se vea la noticia...

Voy a ver si busco más información sobre el tema, o a ver si vosotr@s veis algo raro.

Gracias de nuevo.
  #8 (permalink)  
Antiguo 22/05/2010, 10:29
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: por qué mi rss no muestra las noticias??

Pero trataste lo que te escribí.
Código PHP:
Ver original
  1. while($fila = ....){
  2.     if($fila[1] == 5)
  3.         $enlace = "enlace si $fila[1] es 5";
  4.     else
  5.         $enlace = "enlace si $fila[1] no es 5";
  6.     $rss->addItem($fila[2] . ' - ' . $fila[4], $enlace, $fila[5]);
  7. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 22/05/2010, 10:43
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: por qué mi rss no muestra las noticias??

Claro que lo traté, eso es lo que te estaba diciendo.

Código PHP:

$rss 
= new rss2('Diario Signo''http://www.diariosigno.com','Noticias de la Comunidad Sorda');

include(
'funciones.php');
$conexion conectar();

$consulta "consulta";

$resultado mysql_query($consulta$conexion);
while(
$fila mysql_fetch_row($resultado))
{
    if(
$fila[1] == 5)
        
$enlace "enlace si fila es 5";
    else
        
$enlace "enlace si fila no es 5";
    
$rss->addItem($fila[2].'-'.$fila[4], $enlace$fila[5]);
}
echo 
$rss->saveXML(); 
$rss->addItem($fila[2].'-'.$fila[4], $enlace, $fila[5]);

Eso es lo que tengo y da el error que te he mostrado.

Gracias!! a ver si encuentro una solución pronto.
Un saludo.
  #10 (permalink)  
Antiguo 22/05/2010, 10:53
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: por qué mi rss no muestra las noticias??

Usa htmlentities
Código PHP:
Ver original
  1. createElement('title', htmlentities($title))
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 22/05/2010 a las 11:08
  #11 (permalink)  
Antiguo 22/05/2010, 11:04
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: por qué mi rss no muestra las noticias??

Exacto.

Mirando el código fuente que generaba he visto que la url del enlace se cortaba justo cuando hacía al & para enviar más parámetros.
He cambiado este & a formato html $amp; y parece que funciona, pero igual que antes.

Te crea sólo 1 noticia y con el formato
$fila[2] - $fila[4]
$fila[5]

Pr qué puede estar pasando ésto??

Gracias de nuevo!!
  #12 (permalink)  
Antiguo 25/05/2010, 01:17
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: por qué mi rss no muestra las noticias??

Os comento, hay novedades en mi código y la consecuente respuesta de mi rss.

Lo he creado tanto con rss como con atom, pero de una forma o de otra no consigo hacerlo correctamente.

Los enlaces son
Código:
www.diariosigno.com/rss.php (este es el atom)
www.diariosigno.com/rss2.php (este es el rss)
Si lo probais vereis que, lo primero, falla la carga del marcador dinámico en firefox y después si es...

Atom: No muestra bien la descripción (termina con ]> del CDATA) y el enlace aparece escrito tal cual con la etiqueta del CDATA, luego no enlaza correctamente a la noticia, no se ve ni el texto ni las imágenes.

RSS: La introducción a la noticia se ve correctamente, pero no enlaza bien a la misma y no carga ni imágenes ni vídeo. También, extraña que la última línea(o introducción de noticia) que me muestra siga apareciendo de la forma que os comentaba en anteriores posts ($fila[2]-$fila[4] $fila[5]).

Voy a echarle un vistazo a lo de los enlaces(que no enlace correctamente con la noticia), a lo otro ia se lo he echado y no logro sacarlo.

Nota: El vistazo ia ha sido echado, los pertinentes cambios aplicados, pero resulta que no me coge la nueva url que le pongo. Ni aún limpiando el historial reciente del navegador(Firefox).
Estoy empezando a desesperarme un poquito...

Espero que podais aiudarme.
Un saludo y gracias!!

Última edición por aniMAYtions; 25/05/2010 a las 01:30 Razón: puf...

Etiquetas: muestra, rss
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 22:02.