Rss feeds in database en uitlezen problematisch

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Martijn

Martijn

28/03/2007 11:59:00
Quote Anchor link
Gezien alle topics die al zijn gepost over RSS vond ik toch niet echt een oplossing of een soortgelijk probleem.

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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?
        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...
Gewijzigd op 01/01/1970 01:00:00 door Martijn
 
PHP hulp

PHP hulp

24/11/2024 10:14:36
 
Martijn

Martijn

29/03/2007 09:53:00
Quote Anchor link
bump...?
 
Jan Koehoorn

Jan Koehoorn

29/03/2007 09:59:00
Quote Anchor link
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.

Tijdens het inserten in je DB haalt MySQL misschien sommige tekens er uit voor je. Probeer het eens via mysql_real_escape_string.

2. Als ik het bestand aanroept gooit ie maar 127 items in de DB?! Heel raar maar waar.

Dat heeft misschien te maken met de maximum tijd dat een script mag draaien.

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?

Je kunt een DATETIME veld aanmaken in je DB en die vullen met NOW() in je INSERT query. Later kun je daar dan op sorteren.
 
Jurgen assaasas

Jurgen assaasas

29/03/2007 10:04:00
Quote Anchor link
Wat een moeilijk gedoe, zorg gewoon dat je via PHP in die database kan(externe connectie). en vervolgens lees je daaruit je berichten. Wil je echt via RSS werken dan doe je hetzelfde enkel maak je er ff een content-type XML en dan in een while loop je XML tags
 
Martijn

Martijn

29/03/2007 15:05:00
Quote Anchor link
@ Jan, bedankt voor je reacties, daar kan ik idd wel wat mee.

@ Jurgen, ik kan moeilijk database connectie maken naar andere sites. Die ik zelf niet beheer. Dit is de enigste mogelijkheid.


Ik zal even wat proberen, bedankt voor jullie input.
 
Jurgen assaasas

Jurgen assaasas

29/03/2007 15:18:00
Quote Anchor link
Ow, ik dacht dat je bevriend was met de andere webmaster oid.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.