Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/10/2010, 11:10
Avatar de emprear
emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Exclamación Importar Rss a MySql

Buenas a todos,
estoy intentando importar desde un Rss a una Base de Datos MySql, llegué a un punto en que estoy bloqueado y no le encuentro la vuelta.

El php, lee y extrae los datos del Rss correctamente (como ejemplo estoy usando los feed del Foro HTML de Foros del Web), sin embargo, cuando hago el insert, no consigo que se agregue a la BD más que un solo registro, exactamente el último, el más antiguo. No sé que se me está pasando por alto

el php

Código PHP:
Ver original
  1. <?php
  2. include('cnx.php'); // parametros de conexión a BD
  3. $rssUrl = 'http://www.forosdelweb.com/external.php?type=RSS2&forumids=4';
  4.  $documento = new DOMDocument();
  5.  $documento->load($rssUrl);
  6.  $arrayRss = array();
  7.  foreach ($documento->getElementsByTagName('item') as $nodo) {
  8.   $itemRSS = array (
  9.    'title' => $nodo->getElementsByTagName('title')->item(0)->nodeValue,
  10.    'desc' => $nodo->getElementsByTagName('description')->item(0)->nodeValue,
  11.    'link' => $nodo->getElementsByTagName('link')->item(0)->nodeValue,
  12.    'date' => $nodo->getElementsByTagName('pubDate')->item(0)->nodeValue
  13.    );
  14.   array_push($arrayRss, $itemRSS);
  15. //echo "<pre>";
  16.   //print_r($arrayRss);
  17. //echo "</pre>";
  18.   foreach($arrayRss as $arrayItem)
  19.   {
  20.   $title = $arrayItem['title'];
  21.   $desc = $arrayItem['desc'];
  22.   $link = $arrayItem['link'];
  23.   $date = $arrayItem['date'];
  24.   }
  25.  
  26. // la salida en pantalla muestra todos los registros
  27. // por lo que el foreach me esta recorriendo perfectamente los items
  28. // del Rss
  29. echo "<p><span class='tit'>$title</span> - <a href='$link'>detalles</a></p><p>Descripción:<br />$desc<br /><br />$date</p><hr />";
  30.  
  31. // sin embargo esto solo me hace el insert del último item
  32. $sql="INSERT INTO rss (title,description,link,pubdate) VALUES ('$title','$desc','$link','$date')";
  33.  }
  34.  
  35.  if (!mysql_query($sql,$conec_bd))
  36.  {
  37.   die('Error: ' . mysql_error());
  38.  }
  39.      mysql_close($conec_bd);
  40. ?>


la estructura de la tabla vacia

Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `rss` (
  2.   `id` INT(11) NOT NULL AUTO_INCREMENT,
  3.   `title` VARCHAR(200) NOT NULL,
  4.   `description` text NOT NULL,
  5.   `link` VARCHAR(200) NOT NULL,
  6.   `pubdate` VARCHAR(50) NOT NULL,
  7.   PRIMARY KEY (`id`)
  8. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


aquí les dejo una demo funcionando imprimiendo en pantalla los items del Rss del Foro HTML de foros del Web ( http://www.forosdelweb.com/external....SS2&forumids=4 )

La demo está en
http://foros.emprear.com/php/rss-mysql/importar.php


MySql no es mi fuerte, por ahi se me esta pasando algo que permita hacer inserts múltiples, si algún experto me da la respuesta, desde ya gracias

Saludos


la porrista me saca
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.