• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Nur neue RSS-DAten in Datenbank speichern

Status
Für weitere Antworten geschlossen.

FleyerShaver

Neues Mitglied
Als erstes ich nutze für RSS "MAGPIE". Jetzt meine Frage ich habe zwei Datenbanken:
Code:
CREATE TABLE `gc_newssave` (
  `id` int(10) NOT NULL auto_increment,
  `link` varchar(150) NOT NULL default '',
  `titel` varchar(150) NOT NULL default '',
  `beschreibung` text NOT NULL,
  `pub` varchar(150) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=26 ;
CREATE TABLE `gc_newssave_quellen` (
  `id` int(5) NOT NULL auto_increment,
  `datum` datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
Die Einträge sehen so aus:
Code:
INSERT INTO `gc_news` (`news_id`, `news_subject`, `news_cat`, `news_news`, `news_extended`, `news_breaks`, `news_name`, `news_datestamp`, `news_start`, `news_end`, `news_visibility`, `news_reads`, `news_sticky`, `news_allow_comments`, `news_allow_ratings`) VALUES (1, 'Seite wird neu aufgebaut', 6, 'Da wir jetzt unsere Seite komplett neu aufbauen wird es in nächster Zeit teilweise zu Störungen kommen. Danke für ihr Verständniss euer\r\nGandC.de Team', 'Da wir jetzt unsere Seite komplett neu aufbauen wird es in nächster Zeit teilweise zu Störungen kommen. Danke für ihr Verständniss euer\r\nGandC.de Team', 'y', 1, 1162485313, 0, 0, 0, 126, 0, 1, 1);
INSERT INTO `gc_newssave_quellen` (`id`, `datum`) VALUES (1, '2007-06-30 19:04:31');
Das hier ist mein bisheriger PHP-Code
PHP:
<?
 //Datei die mit der Datenbank verbindet
 include "maincore.php";
 //Magpie einbinden und konfigurieren
 define("MAGPIE_DIR", "./includes/magpierss/");
 define("MAGPIE_CACHE_ON", true);
 define("MAGPIE_CACHE_DIR", "./cache/");
 define('MAGPIE_OUTPUT_ENCODING', "ISO-8859-1");
 include(MAGPIE_DIR."/rss_fetch.inc");
  //Feed-URL
 $url = "http://www.ingame.de/feed.php?type=Atom1.0"; //Hier hab ich eine Feed URL eingegeben.
 
 //Feed laden und parsen
 $feed = fetch_rss($url);

 
 //Überschriften mit Link in einer Liste ausgeben
 foreach ($feed->items as $item) {
  $link = $item["link"];
  $title = $item["title"];
  $beschreibung = $item['summary'];
  $pub = $item['published'];
  $sql = "INSERT INTO gc_newssave(link,titel,beschreibung,pub) VALUES ('".$link."','".$title."','".$beschreibung."','".$pub."')";
 mysql_query($sql) OR die(mysql_error());
 }
  $update = "UPDATE gc_newssave_quellen SET datum=NOW() WHERE id=1";
  mysql_query($update);
 
?>
Jetzt speichert er ja alle Daten die im Newsfeed vorhanden sind. Ich möchte aber das er nur neue Daten einträgt die noch nicht in der Datenbank stehen. Kann mir jemand dabei helfen.
 
Ok das Problem hab ich jetzt geschafft. So sieht der Code aus:
PHP:
 //Feed-URL
 $url = "http://nintendowiix.net/rss.php"; //Hier hab ich eine Feed URL eingegeben.
   if(file_exists($url))
 {
 //Feed laden und parsen
 $feed = fetch_rss($url);

 
 //Überschriften mit Link in einer Liste ausgeben
 foreach ($feed->items as $item) {
  $link = $item["link"];
  $title = $item["title"];
  $beschreibung = $item['summary'];
  $pub = $item['published'];
  $sql = "SELECT * FROM gc_newssave WHERE link='".$link."'";
  $query = mysql_query($sql);
  $num = mysql_num_rows($query);
  if($num == 1)
  {
  
  } else {
    $sql = "INSERT INTO gc_newssave(link,titel,beschreibung,pub) VALUES ('".addslashes(htmlspecialchars($link))."','".addslashes(htmlspecialchars($title))."','".addslashes(htmlspecialchars($beschreibung))."','".addslashes(htmlspecialchars($pub))."')";
 mysql_query($sql) OR die(mysql_error());
 }
 }
 }
Nun meine Frage. Wieso speichert er diesen Feeds jetzt nicht in der DAtenbank:
NintendoWiiX.net Newsfeed
 
ich ab es jetzt fast hinbekommen. Hier lag der Fehler:
<font color="#000000">if(file_exists($url))
Jetzt wäre es nett wenn sich einer diesen Teil nochmal anguckt:
PHP:
 $sql = "SELECT * FROM gc_newssave WHERE link='".$link."'";
  $query = mysql_query($sql);
  $num = mysql_num_rows($query);
  if($num == 1)
  {
  
  } else {
    $sql = "INSERT INTO gc_newssave(link,titel,beschreibung,pub) VALUES ('".addslashes(htmlspecialchars($link))."','".addslashes(htmlspecialchars($title))."','".addslashes(htmlspecialchars($beschreibung))."','".addslashes(htmlspecialchars($pub))."')";
 mysql_query($sql) OR die(mysql_error());
 }
Der funktioniert noch nicht. Er speichert die Daten immer doppelt.
 
Code:
if($num == 1)
  {
  
  } else {
schlechter Stil...
Code:
if (!$num)
 Code...
hätte einfach gereicht...

Gruß, Eugen...
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben