Foros del Web » Programando para Internet » PHP »

Crear RSS

Estas en el tema de Crear RSS en el foro de PHP en Foros del Web. Hola he creado la siguiente bd CREATE TABLE `noticias` ( `idnoticia` int(6) unsigned NOT NULL AUTO_INCREMENT, `titulo` mediumtext, `resumennoticia` mediumtext, `noticia` mediumtext, `categoria` varchar(255) DEFAULT ...
  #1 (permalink)  
Antiguo 01/03/2010, 14:02
 
Fecha de Ingreso: enero-2006
Mensajes: 263
Antigüedad: 18 años, 3 meses
Puntos: 1
Crear RSS

Hola he creado la siguiente bd

CREATE TABLE `noticias` (
`idnoticia` int(6) unsigned NOT NULL AUTO_INCREMENT,
`titulo` mediumtext,
`resumennoticia` mediumtext,
`noticia` mediumtext,
`categoria` varchar(255) DEFAULT NULL,
`imagen` longtext,
`fecha` date DEFAULT NULL,
`minimagen` varchar(255) DEFAULT NULL,
PRIMARY KEY (`idnoticia`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

y lo que tengo que hacer es un rss para poner en mi web, donde aparezcan los datos titulo, un enlace (vernoticia.php?idnoticia=XX), y la noticia, he probado a hacerlo mediante tutoriales pero internet explorer me dice que no entiendo el lenguaje.

Quisiera saber como puedo hacerlo

Muchas gracias y perdon
  #2 (permalink)  
Antiguo 01/03/2010, 14:04
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Crear RSS

si es IE6 creo (no estoy seguro) que no soporta los Rss, intenta en FF a ver
  #3 (permalink)  
Antiguo 01/03/2010, 14:10
 
Fecha de Ingreso: febrero-2007
Mensajes: 165
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Crear RSS

la version es Internet Explorer 7
EL error que sale es

Internet Explorer no puede mostrar esta fuente y he probado en firefox y no sale nada te pongo el codigo por si me puedes echar una mano

rss.php

<?
//Indicamos al navegador que es un documento en XML
header('Content-Type: text/xml'); //Versión y juego de carácteres de nuestro documento
echo '<?xml version="1.0" encoding="iso-88859-1"?>';
//Aquí la conexión o archivo de conexión a la base de datos
$link=mysql_connect("localhost","root","root");
mysql_select_db("bd",$link);
//Hacemos la consulta y la ordenamos por post para mostrar siempre el último
$resultado=mysql_query("select * from noticias order by idnoticia desc",$link);
$row=mysql_fetch_array($resultado);
// "Cortaremos" el artículo en 300 caracteres para nuestra descripción
$descripcion=substr($row[noticia],0,300)."...";
// Y generamos nuestro documento
echo '<rss version="2.0">
<channel>
<title>Pagina prueba</title>
<link>http://</link>
<language>es-Es</language>
<description>Prueba</description>
<generator>Autor RSS</generator>
<item>
<title>'.$row[titulo].'</title>
<link>vernoticia.php/noticias.php?id='.$row[idnoticia].'</link>
<comments>vernoticia.php?id='.$row[idnoticia].'
</comments>
<pubDate>'.$row[fecha].'</pubDate>
<description><![CDATA['.$descripcion.']]></description>
<content:encoded><![CDATA['.$row[noticia].']]></content:encoded>
</item></channel></rss>';
?>


Gracias
  #4 (permalink)  
Antiguo 01/03/2010, 14:19
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Crear RSS

debes de tener caracteres especiales que debes filtrar primero, usa mb_convert_encoding o iconv para reolverlo , yo lo tengo así:

Código PHP:
function tagxml($tagname,$value){
    if (
$value=='') {
        echo 
'<'.$tagname.'/>';
    }else{
        echo 
'<'.$tagname.'>'.mb_convert_encoding(($value),"UTF-8").'</'.$tagname.'>';//mb_convert_encoding
    
}

  #5 (permalink)  
Antiguo 01/03/2010, 14:53
 
Fecha de Ingreso: febrero-2007
Mensajes: 165
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Crear RSS

Puede ser que en la tabla noticias en el campo noticia para que en pantalla salga salto de linea utilizo <br>, y esta funcion donde la deberia poner

Gracias
  #6 (permalink)  
Antiguo 01/03/2010, 15:12
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: Crear RSS

A mí me costó mucho hacer el rss de una web, porque casi no hay información, y el artículo de maestrosdelweb, sinceramente, está mal explicado (y el código no está muy bien precisamente).
Pero viendo el código fuente de algunos rss , me di cuenta del problema. Y es que las etiquetas html del contenido hay que transformarlas, para que no choquen con el rss. El código que yo tengo (funciona al 100% ) es este:
Código PHP:
Ver original
  1. <?php
  2. header('Content-type: text/xml; charset="iso-8859-1"', true);
  3.  
  4. include("config.php");
  5. $rss_titulo = 'Unos y ceros';
  6. $rss_url = 'http://unosyceros.aprendeprogramacion.net';
  7. $rss_descripcion = 'Blog general sobre informatica, internet, ocio y demas.';
  8.  
  9.  
  10. $conexion = mysql_connect($dbserver,$dbuser,$dbpass);
  11. mysql_select_db($db, $conexion);
  12.  
  13.  
  14. $sql = "SELECT * FROM tabla ORDER BY id DESC LIMIT 0,10";
  15. $result = mysql_query($sql, $conexion);
  16. $item = mysql_fetch_assoc($result);
  17.  
  18. echo '<?xml version="1.0" encoding="iso-8859-1"?>';
  19.  
  20. echo '<rss version="0.92">
  21.      <channel>
  22.          <title>'.$rss_titulo.'</title>
  23.          <link>'.$rss_url.'</link>
  24.          <description>'.$rss_descripcion.'</description>
  25.          <language>es</language>';
  26.  
  27. do {
  28. $sql2="SELECT * FROM comentarios WHERE id_entrada=".$item['id'];
  29. $rs=mysql_query($sql2,$conexion) or die("error");
  30. $numcom=mysql_num_rows($rs);
  31. $trozo=substr($item['texto'],0,1500);
  32.  
  33. $mensaje=str_replace("\r\n", "<br>", $mensaje);
  34. $mensaje=str_replace("<","&lt;",$mensaje);
  35. $mensaje=str_replace(">","&gt;",$mensaje);
  36.      echo "<item>\n";
  37.      echo "<title>".$item['titulo']."</title>\n";
  38.      echo "<link>".$rss_url."/leer.php?id=".$item['id']."</link>\n";
  39.      echo "<description>&lt;a href='".$rss_url."/leer.php?id=".$item['id']."#comens'&gt;&lt;b&gt;&lt;font size=1&gt;".$numcom." comentarios&lt;/b&gt;&lt;/a&gt;&lt;/font&gt;&lt;p&gt;".$mensaje."[...]</description>\n";
  40.      echo "</item>\n\n";
  41.  
  42. } while ($item = mysql_fetch_assoc($result));
  43.  
  44. echo "</channel>";
  45. echo "</rss>";
  46. ?>

Saludos
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.

Etiquetas: 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 01:37.