Foros del Web » Programando para Internet » PHP »

Error al leer los RSS de Tumblr

Estas en el tema de Error al leer los RSS de Tumblr en el foro de PHP en Foros del Web. Hola señores Estoy trajando en mi website personal y quiero publicar en una seccion los titulos y enlces los mismos de Tumblr. El problema es ...
  #1 (permalink)  
Antiguo 06/06/2010, 02:11
Avatar de junihh  
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 10 meses
Puntos: 7
Error al leer los RSS de Tumblr

Hola señores

Estoy trajando en mi website personal y quiero publicar en una seccion los titulos y enlces los mismos de Tumblr. El problema es que unque me parece estar leyendo los datos correctamente recibo un error, especificamente este: "Warning: Invalid argument supplied for foreach() in ... tumblr_rss/index.php on line 15".

Esto es un ejemplo de como Tumblr genera el XML de su RSS:

Código HTML:
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	
	<channel>
		
		<atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/>
		<description>Mi blog que no es mi blog.</description>
		<title>JuniHH</title>
		<generator>Tumblr (3.0; @junihh)</generator>
		<link>http://junihh.tumblr.com/</link>
		
		<item>
			<title>[VIDEO] Impresionante, me encanta: http://bit.ly/CIM63</title>
			<description>&lt;p&gt;[VIDEO] Impresionante, me encanta: &lt;a href="http://bit.ly/CIM63" target="_blank"&gt;http://bit.ly/CIM63&lt;/a&gt;&lt;/p&gt;</description>
			<link>http://junihh.tumblr.com/post/197569135</link>
			<guid>http://junihh.tumblr.com/post/197569135</guid>
			<pubDate>Sat, 26 Sep 2009 12:50:05 -0430</pubDate>
		</item>
		
		<item>
			<title>Efectos superinteresantes con los videos de YouTube… merece un waaaooooo:...</title>
			<description>&lt;p&gt;Efectos superinteresantes con los videos de YouTube… merece un waaaooooo: &lt;a href="http://yooouuutuuube.com" target="_blank"&gt;http://yooouuutuuube.com&lt;/a&gt;&lt;/p&gt;</description>
			<link>http://junihh.tumblr.com/post/197569124</link>
			<guid>http://junihh.tumblr.com/post/197569124</guid>
			<pubDate>Sat, 26 Sep 2009 12:50:05 -0430</pubDate>
		</item>
		
		<item>
			<title>Buenisimo —&gt; RT @Linaceballos: RT @NestorCarrasco: 87 ejemplos de usos creativos de...</title>
			<description>&lt;p&gt;Buenisimo —&gt; RT @Linaceballos: RT @NestorCarrasco: 87 ejemplos de usos creativos de YouTube! Excelente! &lt;a href="http://bit.ly/87coolthings" target="_blank"&gt;http://bit.ly/87coolthings&lt;/a&gt;&lt;/p&gt;</description>
			<link>http://junihh.tumblr.com/post/197569139</link>
			<guid>http://junihh.tumblr.com/post/197569139</guid>
			<pubDate>Sat, 26 Sep 2009 12:50:05 -0430</pubDate>
		</item>
		
	</channel>
	
</rss> 
Esto es la funcion que prepare para leer el XML:

Código PHP:
<?php

    
function setTumblrPost ()
    {
        
        
$url 'tumblr_rss.xml';
        
        
$ch curl_init();
        
curl_setopt($chCURLOPT_URL$url);
        
curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
$output curl_exec($ch);
        
curl_close($ch);
        
$data simplexml_load_string($output);
        
        foreach (
$data->channel as $dt)
        {
            
            
$tmbTitu $dt->item->title;
            echo 
$tmbTitu;
            
        }
        
        
//return $tmbList;
    
}
    
    
setTumblrPost ();
    
?>
Con una funcion similar leo todos los mensajes en Twitter, asi que no entiendo el motivo del dichoso error. Podrian aclarrme que esta mal en mi funcion y el "foreach", que es la linea 15 mencionado en el error.
__________________
JuniHH
- Mi blog
- Mi portafolio
  #2 (permalink)  
Antiguo 06/06/2010, 08:57
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Error al leer los RSS de Tumblr

pues solo lee el mensaje de error, ahí dice todo...

además es recomendable depurar tus variables antes de usarlas, así aseguras su naturaleza..
Código PHP:
var_dump($data); 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 06/06/2010, 09:39
Avatar de junihh  
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 10 meses
Puntos: 7
Respuesta: Error al leer los RSS de Tumblr

Por el mensaje de error es precisamente que hago la pregunta.

Luego de guardar los datos con simplexml_load_string en la variable $data el siguiente paso es leer los nodos contenidos, por lo que para llegar a <item> que es lo que me interesa, en teoria deberia poner en el foreach:

Código PHP:
$data->channel->item 
Y tuve el mismo error. Luego probe con:

Código PHP:
$data->channel[0]->item 
Pero no me nada, asi que intente con:

Código PHP:
$data->channel 
Como se ve en el codigo mas arriba. Alguna otra sugerencia ??, porque aunque el error me dice que esa linea esta mal no veo por que esta mal.
__________________
JuniHH
- Mi blog
- Mi portafolio

Última edición por junihh; 06/06/2010 a las 09:47
  #4 (permalink)  
Antiguo 06/06/2010, 09:41
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Error al leer los RSS de Tumblr

bueno, pero hiciste el var_dump($data) antes del bucle del error??

¿que valores te muestra??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 06/06/2010, 09:53
Avatar de junihh  
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 10 meses
Puntos: 7
Respuesta: Error al leer los RSS de Tumblr

OK, tengo el codigo asi en este momento:

Código PHP:
<?php

    
function setTumblrPost ()
    {
        
        
$url 'tumblr_rss.xml';
        
        
$ch curl_init();
        
curl_setopt($chCURLOPT_URL$url);
        
curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
$output curl_exec($ch);
        
curl_close($ch);
        
$data simplexml_load_string($output);
        
var_dump($data);
        
        foreach (
$data->channel as $dt)
        {
            
            
$tmbTitu $dt->title;
            echo 
$tmbTitu;
            
        }
        
        
//return $tmbList;
    
}
    
    
setTumblrPost ();
    
?>
Y esto como resultado:

Código PHP:
bool(false
WarningInvalid argument supplied for foreach() in ... /tumblr_rss/index.php on line 16 
La linea 16 es el foreach.
__________________
JuniHH
- Mi blog
- Mi portafolio
  #6 (permalink)  
Antiguo 06/06/2010, 09:55
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Error al leer los RSS de Tumblr

ves, así de simple... ;)

var_dump() te está diciendo que $data es false, osea que tu problema viene al adquirir el XML...

¿que pasa si usas una URL absoluta hacía el XML??
http://pagina.com/rss.xml

porque se ve que solo usas un nombre como url...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 06/06/2010, 10:10
Avatar de junihh  
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 10 meses
Puntos: 7
Respuesta: Error al leer los RSS de Tumblr

YEESSSSSSSS, ese era mi problema, no sabia que debia pasarle la url absoluta. Estaba haciendo las pruebas con un archivo local y crei que al estar ambos archivos juntos no habria problemas.

Muchisimas gracias por tu ayuda, tendre en cuenta que debo pasar url's absolutas a los XML's.
__________________
JuniHH
- Mi blog
- Mi portafolio

Etiquetas: rss, tumblr
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 23:00.