16 berichten aan het bekijken - 1 tot 16 (van in totaal 16)
  • Q:
    Bijdrager
    B-Mac

    RSS – Hoe werkt het?

    Ik heb gisteren handmatig m’n eerste XML-feed voor RSS gemaakt (http://www.bassandee.nl/bassandee.xml), online gezet en opgevraagd via een RSS-programma (NetNewsWire). Dat werkt allemaal prima. Nu vraag ik me alleen af, hoe ’t nou eigenlijk allemaal echt werkt…

    Ik heb echt heel erg veel informatie van internet gelezen maar het gaat allemaal maar een kant uit: dat je heel makkelijk RSS-feeds kunt lezen en zo makkelijk nieuws kunt vergaren, blah, blah… Dat weet ik nu wel. Ik wil weten of die informatie uit een database komt en uit welke of dat het XML-bestand de database is waar alle informatie uitkomt.

    Ik heb trouwens in PHP (gevonden op internet) een script dat het XML-bestand uitleest, maar ik kan me amper voorstellen dat websites op die manier werken: het is namelijk nogal omslachtig. Werkend kun je het hier zien: http://www.bassandee.nl/bassandee.php en de code hier:

    [code:1:01cae68e4c]<?

    function parse_rss($f)

    {
    $xmlfile = fopen ($f, ‘r’);
    if (!$xmlfile) die (’Error: XML-bestand’);
    $readfile = fread ($xmlfile ,40000);
    $parsefile = eregi ("<item>(.*)</item>", $readfile, $arrayreg);
    $filechunks = explode ("<item>", $arrayreg[0]);
    $count = count ($filechunks);

    for($i=1 ; $i<=$count-1 ;$i++)

    {
    ereg ("<title>(.*)</title>", $filechunks[$i], $title);
    ereg ("<link>(.*)</link>", $filechunks[$i], $link);
    ereg ("<description>(.*)</description>", $filechunks[$i], $description);

    echo str_replace (’hxaxh’,’a’, "<hxaxh href =’$link[1]’>".utf8_decode($title[1])."</hxaxh><br>");
    echo "".utf8_decode($description[1])."<br><br>";
    }
    }

    $xmlfeed = ‘bassandee.xml’;
    parse_rss($xmlfeed);

    ?>[/code:1:01cae68e4c]

    Kortom: wie me 1, 2, 3, kinderlijk eenvoudig uitleggen hoe de vork in de steel zit? Ik heb ervaring met PHP en MySQL, niet met XML.

    Moderator
    Adriaan Mol

    Wat is er omslachtig aan die code? Mijn code om RSS feeds te parsen is 2 a 3x zo lang. Niet dat deze omslachtiger is, maar jouw code ziet er juist niet echt volledig uit.

    Bijdrager
    B-Mac

    Voor alle duidelijkheid: dit is niet mijn code, maar iets dat ik heb gevonden op internet.

    Nu ik toch, Adriaan, jou aandacht heb… hoe doe jij het hier? De nieuwsitems op macosx.nl, waar haal jij die vandaan? Staan die in een MySQL database en update je die d.m.v. een CMS en haal je daar later de RSS-feeds uit? Of heb je juist een database met XML en parse je de informatie die op de website staat daaruit?

    ’t Kwartje is nog niet gevallen…:|

    Bijdrager
    Fokker3

    Ik ben er toevallig voor mijn werk ook mee bezig (met RSS feeds maken dan), alleen geen Mac te bekennen daar. Althans, bijna niet.
    Volgens mij, nog niet ingewerkte in de materie, is de RSS feed “niets” meer dan een andere manier van je content uit je CMS publiceren. Een ander “pagina-template” zeg maar.
    Uiteraard kan ik de plank volledig mis slaan 8)

    Maar omdat ik dit toch moet uitzoeken, is alle info welkom!

    Bijdrager
    klaus

    Inderdaad, het is in principe niets anders dan een xml-bestand die opgebouwd wordt met content vanuit bijvoorbeeld een database. Dat xml-bestand moet conform de rss normen zijn, die ik niet vanbuiten ken, maar vast wel ergens te vinden zijn. Een extern programma of een php-pagina kan dan deze xmlpagina (rss feed) gaan inlezen, zodat je die info ziet op uw pagina of programma.

    In principe is het niet meer dan dit, de werkelijke uitwerking is natuurlijk iets gedetailleerder

    Bijdrager
    @GHB

    Je kan bijvoorbeeld NetNewsWire gebruiken om rss feeds uit te lezen. Het is dan ook niets anders dan een andere manier van een forum of nieuwssite lezen.

    Het eerste probleem wat ik tegen kom met jouw rss feed is dat deze niet correct is. Kijk maar eens op http://www.develuwe-apeldoorn.nl/rss.php (is van het appt. complex waar ik binnekort ga wonen).

    Het eerste is dat je de headers moet gaan schrijven:
    [code:1:5dbd8fe51b] header (’Expires: ‘ . gmdate(’D, d M Y H:i:s’, time()) . ‘ GMT’);
    header (’Last-Modified: ‘ . gmdate(’D, d M Y H:i:s’) . ‘ GMT’);
    header (’Content-Type: text/xml’);
    echo "<?xml version="1.0" encoding="iso-8859-1" ?>n";[/code:1:5dbd8fe51b]

    Als je de bron van mijn rss-feed bekijkt dan zie je ook dat het document anders is opgebouwd. Het begint met rss, daarna channel. Je geeft de nieuwsberichten aan door gebruik te maken van item.

    Zie voor meer info http://www.xml.com/pub/a/2002/12/18/dive-into-xml.html

    Succes!

    Bijdrager
    B-Mac

    Staat alle informatie (in jouw geval nieuwsitems) die op jouw website te lezen is in het XML-bestand of in een andere database? Ik snap nu namelijk nog niet zo goed waar de informatie weg komt… Kun je me dat uitleggen?

    Bijdrager
    klaus

    je ziet dus dat z’n bestand die je aanroept rss.php noemt. Dit is dus een php-bestand die informatie gaat uitlezen uit een database, en output geeft in de vorm van het xmlbestand die je ziet in 1 van de vorige posts. Je moet dus wel de headers aanpassen, voor de datum van wijziging etc. Zodat de feeder weet dat er nieuwe items zijn bijvoorbeeld.

    Bijdrager
    @GHB

    In mijn geval staan alle nieuwsitems in een MySQL database. In mijn PHP bestand wordt die database geopend en dmv van een do…while loop worden de items in XML (RSS) geplaatst.

    Ik zie overigens nu net dat jij het andersom doet? Jij hebt een XML file die je met een PHP bestand uitleest?

    Dus je hebt een database. Een PHP bestand opent die database en toont deze. Door de opmaak van het bestand (rss, channel en items) en de headers wordt het een XML bestand (het heet overigens bijvoorbeeld gewoon rss.php)

    Eigenlijk is het gewoon een html bestand (als ik de headers niet schrijf, krijg je gewoon html te zien, vraag de bron van mijn rss-feed maar eens op)

    Bijdrager
    B-Mac

    Ik merk dat ik vandaag een komkommerdag heb… ’t Dringt allemaal niet zo heel snel tot me door, waarvoor mijn excuses (vakantie, hé… :))

    Als ik het nu goed begrijp zit het (bijvoorbeeld) zo:

    MySQL database > PHP > website

    en

    MySQL database > PHP > XML-feed / RSS-feed

    Toch?

    Bijdrager
    @GHB

    Correct… Als je een pagina maakt welke nieuwsitems toont in html vorm, ben je al voor 90% op weg.

    Headers toevoegen en de structuur van een RSS document volgen, en je bent er! :P

    En even tussendoor: ik zie net dat ik een Hardcore gebruiker ben! 8)

    Bijdrager
    @GHB

    Hier een voorbeeld (er zijn overigens nog veel meer opties die je kan gebruiken binnen een RSS document)

    [code:1:95632f43f5]<?php
    $db = mysql_connect($cfgServerHost, $cfgServerUser, $cfgServerPassword);
    mysql_select_db($cfgServerDB,$db);

    //Haal alle nieuwsberichten op uit de database
    $sql = "SELECT * FROM $tablenb ";
    $result = mysql_query($sql,$db);

    if (!empty($HTTP_SERVER_VARS[’SERVER_SOFTWARE’]) && strstr($HTTP_SERVER_VARS[’SERVER_SOFTWARE’], ‘Apache/2’)) {
    header (’Cache-Control: no-cache, pre-check=0, post-check=0, max-age=0’);
    } else {
    header (’Cache-Control: private, pre-check=0, post-check=0, max-age=0’);
    }
    header (’Expires: ‘ . gmdate(’D, d M Y H:i:s’, time()) . ‘ GMT’);
    header (’Last-Modified: ‘ . gmdate(’D, d M Y H:i:s’) . ‘ GMT’);
    header (’Content-Type: text/xml’);
    echo "<?xml version="1.0" encoding="iso-8859-1" ?>n";
    ?>
    <rss version="0.92">
    <channel>
    <docs> [site] </docs>
    <title> [titel] </title>
    <link> [url] </link>
    <description></description>
    <managingEditor> [Email] </managingEditor>
    <webMaster> [Email] </webMaster>
    <lastBuildDate><?php echo gmdate(’D, d M Y H:i:s’)." GMT" ?></lastBuildDate>
    <?php if ($myrow = mysql_fetch_array($result)) {
    do { ?>
    <item>
    <title> [Titel van het item, uit de database] </title>
    <link> [link van het item, ook uit de database] </link>
    <description> [een deel van de inhoud van het item, ook uit de database] </description>
    </item>
    <?php } while ($myrow = mysql_fetch_array($result));
    } ?>
    </channel>
    </rss>[/code:1:95632f43f5]

    Tussen de blokhaken moet je wat variabelen invullen, dit is afhankelijk van de database, etc.
    Let niet op de uitlijning! Werkt niet echt goed op deze manier. Ik hoop dat je er iets aan hebt.

    Bijdrager
    tricksel

    Hmm, jongens, interessant draadje… Gelijk een tussendoor-vraagje… Heeft iemand toevallig ergens een linkje rondslingeren naar een feed met de weersverwachtingen…? KNMI-site en Meteo Consult geven me niet echt hoop!

    Bijdrager
    Fokker3
    ”tricksel”

    Hmm, jongens, interessant draadje…

    Inderdaad! Daarom ook maar even een abonnementje genomen;-)

    ”tricksel”

    ]Gelijk een tussendoor-vraagje… Heeft iemand toevallig ergens een linkje rondslingeren naar een feed met de weersverwachtingen…? KNMI-site en Meteo Consult geven me niet echt hoop!

    Ik denk niet dat die er zullen zijn: daar willen ze (KNMI, Meteo Consult ed) geld mee verdienen! Misschien via weather.com (niet gekeken hoor, maar via de Meteorologist werkt dat prima)

    Bijdrager
    tricksel

    Te flauw voor woorden dat ze zelfs daar al geld mee willen verdienen. Misschien dat ik dan maar zelf hun site(-s) naar binnen haal en er XML cq. RSS van moet bouwen. Hetzelfde doe ik ondertussen met de TV-gids via XMLTV Mochten mensen daar overigens interesse in hebben, dan hoor ik het wel. Het voldoet weliswaar niet aan de RSS-standaard, maar weer wel aan de XMLTV-standaard :)

    Ik ga in ieder geval eens pielen of ik met wat reguliere expressies of zo het weer kan “jatten”…

    Bijdrager
    @GHB

    @Bas Sandee

    Is het al gelukt??

16 berichten aan het bekijken - 1 tot 16 (van in totaal 16)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.