Volledige versie bekijken : RSS vraag van rss leek



MabadosS
17 May 2007, 13:21
Hallo, ik ken niets van rss maar ik heb dit nodig voor een website.
Ik ontdekte dat mijn forum een soort rss code kan genereren.

Bvb http://www.jeugdwerker.be/fora/index.php?action=.xml;sa=recent;board=2.0;limit=10 (http://www.jeugdwerker.be/fora/index.php?action=.xml;sa=recent;board=2.0;limit=10 )

Nu is mijn vraag, hoe ik dit kan opnemen in een site zodat dit in leesbare taal wordt weergegeven?

Alvast bedankt voor de hulp!

Jelle
17 May 2007, 22:48
Daarvoor heb je de XML gerelateerde parsing functies (http://www.php.net/xml) nodig van PHP. Dat zijn de moeilijke XML functies, die prima met PHP4 én PHP5 werken.

Het kan gelukkig gemakkelijker (als je host al PHP5 gebruikt, en dat is bij jouw site het geval) :p

Veel webhosts gebruiken nog steeds PHP4 en de meeste CMS'en werken prima met beiden, maar PHP5 heeft dus écht wel grote voordelen (die nu dus nog steeds amper gebruikt worden). Eén daarvan zijn de SimpleXML functies (http://php.net/manual/en/ref.simplexml.php) en wat die zijn, zegt de naam zelf: PHP functies voor XML parsing, maar dan gemakkelijkere :)

Bekijk eerst even voorbeeld 2180: een XML bestand zoals jouw RSS, maar dan ingesloten in een variabele. Bij jou is het dus een puur XML bestand, gegenereerd door het forum. Bekijk dan voorbeeld 2182, en daar zal je jouw code voor de RSS parsing aan moeten spiegelen. Je echo't gewoon wat je wil en zo komt het op een normale manier op het scherm.
Merk wel op dat de XML hier dus een variabele is in het voorbeeld, geen bestand. Om een XML bestand te importeren in een variabele, gebruik je eerst de simplexml_load_file (http://www.php.net/manual/en/function.simplexml-load-file.php) functie.

Ten slotte zijn er nog kant-en-klare parsers, maar echt aan te raden vind ik die niet als je het met SimpleXML gemakkelijk zelf kan. Dit is misschien even puzzelen, maar als je met een kant-en-klare parser werkt, moet dat even erg daar die vaak veel overbodige features hebben en je het systeem op zich eerst moet begrijpen.

MabadosS
17 May 2007, 22:56
Ik bekijk het in de komende dagen en laat dan weten of het lukt of niet.

Alvast bedankt voor de hulp!

MabadosS
18 May 2007, 13:20
Ok, mijn eerste, nog niet succesvolle poging.

Na het lezen van je info heb ik volgende code samengesteld om de laatste onderwerpen te kunnen weergeven vanop mijn forum:


<?php
include 'http://www.jeugdwerker.be/fora/index.php?action=.xml;sa=recent;board=2.0;limit=10 ';
$xml = new SimpleXMLElement($xmlstr);
/* For each <movie> node, we echo a separate <plot>. */
foreach ($xml->recent-post as $recent-post) {
echo $recent-post->subject, '<br />';
}
?>


Helaas wel een foutmelding zie www.jeugdwerker.be/test/test.php (http://www.jeugdwerker.be/test/test.php)

Jelle
18 May 2007, 13:33
Je hebt m'n tweede link naar de simplexml_load_file (http://www.php.net/manual/en/function.simplexml-load-file.php) functie niet bekeken :p

Je laat een nieuw SimpleXMLElement aanmaken met $xmlstr, maar die variabele bestaat niet ... Hij loopt dus vast.
In het voorbeeld van de eerste link zat de XML in een variabele en kon dit dus wel. In dit geval moet echter de externe XML ingeladen worden in een variabele met simplexml_load_file.

Dit zou het beter moeten doen:

<?php
$xmlstr = simplexml_load_file('http://www.jeugdwerker.be/fora/index.php?action=.xml;sa=recent;board=2.0;limit=10 ');
$xml = new SimpleXMLElement($xmlstr);

foreach ($xml->recent-post as $recent-post) {
echo $recent-post->subject, '<br />';
}
?>

MabadosS
18 May 2007, 13:44
Je hebt m'n tweede link naar de simplexml_load_file (http://www.php.net/manual/en/function.simplexml-load-file.php) functie niet bekeken :p

Wel bekeken, maar niet goed verstaan waarschijnlijk ;)
Maar ik versta nu wel wat de bedoeling van die functie was.

In ieder geval, het werkt wel nog niet, ik krijg een error op lijn 5:

foreach ($xml->recent-post as $recent-post) {

Ik heb dit aangepast want in het voorbeeld stond
foreach ($xml->movie as $movie) {

Dus ik dacht daar gewoon die movie te veranderen naar recent-post omdat het bij mij over de recente posts gaan, maar dat was dus niet juist geïnterpreteerd.

En de error is:
Parse error: syntax error, unexpected '-', expecting ')' in /home/MabadosS/domains/jeugdwerker.be/public_html/test/test.php on line 5

Jelle
18 May 2007, 14:25
Probeer eens:

<?php
$xmlstr = simplexml_load_file('http://www.jeugdwerker.be/fora/index.php?action=.xml;sa=recent;board=2.0;limit=10 ');
$xml = new SimpleXMLElement($xmlstr);

foreach ($xml->recent-post as $recentpost) {
echo $recentpost->subject, '<br />';
}
?>

Dat zou het normaal gezien moeten verhelpen, al kan het ook aan het andere streepje liggen (of aan beiden).

MabadosS
18 May 2007, 14:30
Probeer eens:

<?php
$xmlstr = simplexml_load_file('http://www.jeugdwerker.be/fora/index.php?action=.xml;sa=recent;board=2.0;limit=10 ');
$xml = new SimpleXMLElement($xmlstr);

foreach ($xml->recent-post as $recentpost) {
echo $recentpost->subject, '<br />';
}
?>

Dat zou het normaal gezien moeten verhelpen, al kan het ook aan het andere streepje liggen (of aan beiden).

Ik vrees dat het nog erger is geworden, nu komt er een hele resem aan foutmeldingen.

Zie http://www.jeugdwerker.be/test/test.php

Jelle
18 May 2007, 16:17
Derde poging, hopelijk werkt het nu :p


<?php
$xml = simplexml_load_file('http://www.jeugdwerker.be/fora/index.php?action=.xml;sa=recent;board=2.0;limit=10 ');

foreach ($xml->{'recent-post'} as $recentpost) {
echo $recentpost->subject, '<br />';
}
?>

MabadosS
18 May 2007, 18:46
Bedankt Jelle, we zij er bijna.

Nu krijg ik inderdaad de titels te zien van de laatste topics, maar ze zijn niet aanklikbaar.

IK dacht dit op te lossen door 'subject' te vervangen door 'body', maar dan kreeg ik ook de volledige post te zien.

Hoe zou ik het kunnen oplossen dat ze aanklikbaar worden?

Alvast bedankt!

Jelle
18 May 2007, 19:41
Dan gebruik je:


<?php
$xml = simplexml_load_file('http://www.jeugdwerker.be/fora/index.php?action=.xml;sa=recent;board=2.0;limit=10 ');

foreach ($xml->{'recent-post'} as $recentpost) {
echo '<a href="'.$recentpost->link.'">'.$recentpost->subject.'</a><br />';
}
?>

MabadosS
18 May 2007, 20:12
Dan gebruik je:


<?php
$xml = simplexml_load_file('http://www.jeugdwerker.be/fora/index.php?action=.xml;sa=recent;board=2.0;limit=10 ');

foreach ($xml->{'recent-post'} as $recentpost) {
echo '<a href="'.$recentpost->link.'">'.$recentpost->subject.'</a><br />';
}
?>

Bedankt, het werkt perfect.

En het heeft mij wat meer inzicht gegeven in de code, waarvoor ook dank!