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

Les cuento, si ven bien, hay dos foreach, uno dentro del otro, puesto el INSERT dónde me sugirió repara2, consegui agregar registros, pero en lugar de los 15 (es el numero de salida real del Rss de foros del Web), se crearon 120. no fue la solución .pero me dio la pista.

el lugar correcto del INSERT es dentro del foreach() primario, como estaba originalmente, pero ahí tambien tiene que ir el condicional por si no se cumple mysql_query .

Además tenia el problema que los datos recogidos no estaban correctamente filtrados para agregarlos a la base de tados, yo me concentraba en la "descripción" de cada item y limpiaba eso, pero me di cuenta de que algunos usuarios habían utilizados caracteres (', "; etc.) en el mismo título lo que producía un error en la sintáxis del SQL.

finalmente la script debe quedar
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=18';
  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.  
  19. ######### quitamos comas, comillas simples y dobles de todos los datos recogidos
  20. $e = "'";
  21.   foreach($arrayRss as $arrayItem)
  22.   {
  23.   $title = $arrayItem['title'];
  24.   $title2 = str_replace(array(',', '"', $e), '', $title);
  25.  
  26.   $desc = strip_tags($arrayItem['desc']);
  27.   $desc2 = str_replace(array(',', '"', $e), '', $desc);
  28.  
  29.   $link = $arrayItem['link'];
  30.   $link2 = str_replace(array(',', '"', $e), '', $link);
  31.  
  32.   $date = $arrayItem['date'];
  33.   }
  34. $sql="INSERT INTO rss (title,description,link,pubdate) VALUES ('$title2','$desc2','$link2','$date')";
  35. if (!mysql_query($sql,$conec_bd)){die('Error: ' . mysql_error());}
  36. echo "<p><span class='tit'>$title2</span> - <a href='$link'>detalles</a></p><p>Descripción:<br />$desc2<br /><br />$date</p><hr />";
  37.  
  38.  }
  39.  mysql_close($conec_bd);
  40. ?>

Gracias colegas por la ayuda

saludos



para la más sexy del foro
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.