Ik ben bezig met een website voor gamers waar op 1 site via RSS feeds van andere websites nieuws op mijn pagina komt. Om de snelheid wat te behouden wil ik dus een cronjob laten lopen die om een bepaalde tijd een update script run die feeds van de andere sites haalt en in mijn eigen database stop. Zodat ik die dus kan aanroepen op mijn site(logisch).
Ik gebruik op het moment een scriptje die ik hier heb weggeplukt maar heb hem een beetje aangepast.
<?
function rssfeed($bron, $id)
{
$xml_feed = file_get_contents($bron);
$xml_praser = xml_parser_create();
xml_parse_into_struct($xml_praser,$xml_feed,$xml_keys,$xml_index);
xml_parser_free($xml_praser);
for($i = 0;!empty($xml_index['TITLE'][$i]);$i++){
$link = $xml_keys[$xml_index['LINK'][$i]]['value'];
$titel = $xml_keys[$xml_index['TITLE'][$i]]['value'];
$kop = $xml_keys[$xml_index['TITLE'][0]]['value'];
$description = $xml_keys[$xml_index['DESCRIPTION'][$i]]['value'];
//echo $kop . ' : ' . $titel . '<br>' . $description . '<br><br>';
mysql_query("insert into items(titel, description, link, feed_id) values('$titel','$description','$link','$id')");
}
}
connectDB();
$sql = mysql_query("select * from feeds");
while($row = mysql_fetch_object($sql)){
rssfeed($row->url_feed, $row->id);
}
?>
...heel simpel. Ik heb dus een tabel met urls naar xml feeds van andere sites. Voor elke feed haal ik dus items op en stop ik die in de database.
Wat is nu het probleem?
1. Als ik de feed items gewoon echo werkt het allemaal prima. Als ik ze daarintegen in de database gooi, pakt ie sommige items niet.
2. Als ik het bestand aanroept gooit ie maar 127 items in de DB?! Heel raar maar waar.
3. Ik gooi dus items in de DB en elk item krijgt dus een id, het laatst ingevoerde item heeft dus het hoogste id:P Maar, hoe krijg ik dan het laatste nieuwsitem boven? Stel dat ik 10 nieuwe items invoer, waarvan de nieuwste dus de eerste is die ingevoerd word. Hoe krijg ik dan dus de nieuwste boven aan? Met asc en desc sorten werkt dus niet. Moet ik dan nieuwe tabellen aanmaken voor elke feed opzich? Of is er een andere manier?
Alvast bedankt voor jullie replies/antwoorden...