bezorg de laatste berichten direct op de desktop
Welkom, Gast
Alstublieft Inloggen of Registreren.    Wachtwoord verloren?

TUTORIAL: RSS-feed automatisch maken via PHP
(1 bezoeker) (1) Gast
Ga naar onderkantPagina: 12
TOPIC: TUTORIAL: RSS-feed automatisch maken via PHP
#2092
TUTORIAL: RSS-feed automatisch maken via PHP 6 Jaren, 4 Maanden geleden Karma: 0
Op het net zijn veel tutorials en artikelen te vinden over hoe je een RSS-feed op je site kan tonen. Erg leuk, maar niet iedereen wil de feed van een ander op z'n site. Wat je minder makkelijk vindt (ik althans) is hoe je automatisch een RSS-feed aan kan laten maken die alle informatie uit je CMS haalt en in een feed zet.

Dit is mogelijk door je .xml-bestand te parsen als PHP. Makkelijker gezegd: een bestand met de extensie .xml wordt gelezen als .php, waardoor je codes in je .xml kan plaatsen.

[b:lmxqy5wh].htaccess[/b:lmxqy5wh]

Om dit voor elkaar te krijgen moet je om te beginnen een .htaccess bestand aanmaken in de root van je website. Als je dit bestand gemaakt hebt voer je daar de volgende regel in:
[code:lmxqy5wh]AddType application/x-httpd-php .xml[/code:lmxqy5wh]
Als je dit gedaan hebt kan je het bestand opslaan en verder laten voor wat het is.

[b:lmxqy5wh].xml-bestand. [/b:lmxqy5wh]

Om te beginnen moeten we zorgen dat het bestand ook echt daadwerkelijk gelezen wordt als .xml-bestand:

[code:lmxqy5wh]
<?php
header ("Content-Type: text/xml");
echo '<?xml version="1.0" encoding="ISO-8859-1" ?>';
[/code:lmxqy5wh]

Nu gaan we de verbinding maken met de database waar je berichten in staan. Gebruikersnaam, wachtwoord en database moet je zelf invullen.

[code:lmxqy5wh]
mysql_connect("localhost","gebruikersnaam","wachtwoord") or die("MySQL connectie mislukt.");
mysql_select_db("database") or die("Selecteren van database mislukt.");
[/code:lmxqy5wh]

Let er op dat in een RSS-feed niet teveel berichten staan. Hou het klein en simpel. Zelf heb ik er voor gekozen om maximaal 5 berichten te tonen, maar dit kan je zelf aanpassen als je er meer of minder wilt.
[code:lmxqy5wh]
$query = "SELECT * FROM database ORDER BY (id) DESC LIMIT 5";
$res = mysql_query($query);
[/code:lmxqy5wh]

Nu even kijken of er wel berichten zijn, zo niet, gelijk exit, zo ja, dan komt de code waar het allemaal om draait!!!
[code:lmxqy5wh]
$num = mysql_num_rows($res);
if($num == 0)
{
exit;
}
else
{
[/code:lmxqy5wh]

Hier komt dat de code die de gegevens juist in een .xml-bestand omzet.
[code:lmxqy5wh]
// Eerst even laten weten welke rss versie het is
echo "<rss version="2.0">n";
echo "<channel>n";
// Vul hier een titel in
echo "<title>TITEL</title>n";
// Vul hier het adres van je site in
echo "<link>http://www.adresvanmijn.site/&a...>n";
// Hier kan je een korte beschrijving geven van jouw pagina
echo "<description>Hier kan je een korte beschrijving geven van jouw pagina</description>n";
[/code:lmxqy5wh]

Tot zover het basisgedeelte. Als je eens een RSS-feed bekijk, zoals [url=http://www.jdbdesign.nl/feed.xml:lmxqy5wh]hier (klik)[/url:lmxqy5wh], kan je zien dat het eerste stuk altijd hetzelfde is, namelijk het stuk wat we hierboven behandeld hebben. Daarna komen de verschillende berichten, dus het dynamische gedeelte:

(Vul bij de sterretjes de link in naar je nieuwsberichten, exclusief het id (bij mijn feed is dat <!-- m --><a class="postlink" href="http://www.jdbdesign.nl/nieuws/toonbericht.php?id=">http://www.jdbdesign.nl/nieuws/toonbericht.php?id=</a><!-- m --> ) de .$sql-&gt;id zorgt er voor dat het id-nummer er achter wordt gezet)
[code:lmxqy5wh]
while&#40;$sql = mysql_fetch_object&#40;$res&#41;&#41;
&#123;
$blog_title = stripslashes&#40;$sql-&gt;titel&#41;;
$blog_link = &quot;********&quot;&#46;$sql-&gt;id;
$blog_description = stripslashes&#40;$sql-&gt;kortbericht&#41;;
echo &quot;&lt;item&gt;n&quot;;
echo &quot;&lt;title&gt;&quot;&#46;$blog_title&#46;&quot;&lt;/title&gt;n&quot;;
echo &quot;&lt;link&gt;&quot;&#46;$blog_link&#46;&quot;&lt;/link&gt;n&quot;;
echo &quot;&lt;description&gt;n&quot;;
echo $blog_description;
echo &quot;&lt;/description&gt;n&quot;;
echo &quot;&lt;/item&gt;n&quot;;
&#125;
[/code:lmxqy5wh]

Dat was dan het dynamische gedeelte!! Nu nog even afsluiten:
[code:lmxqy5wh]
echo &quot;&lt;/channel&gt;n&quot;;
echo &quot;&lt;/rss&gt;n&quot;;
&#125;
?&gt;
[/code:lmxqy5wh]

En dan heb je in principe een PHP-bestand, welke wordt gezien als een RSS-feed en automatisch alle berichten uit je database haalt.

[b:lmxqy5wh][u:lmxqy5wh]LET OP: sla het bestand op als .xml[/u:lmxqy5wh][/b:lmxqy5wh]

Bovenstaande code is niet van mij, ik heb het niet gemaakt, ik heb het enkel aangepast zodat het beter was voor mijzelf. Ik wens dan ook geen credits te ontvangen voor dit script, maar wel voor de beschrijving van hoe je het script moet implementeren natuurlijk!! :wink:

Wees mild met uw commentaren en scheutig met uw complimenten... :lol:

Nog een keer de code in het geheel:

[b:lmxqy5wh].htaccess[/b:lmxqy5wh]
[code:lmxqy5wh]AddType application/x-httpd-php &#46;xml[/code:lmxqy5wh]

[b:lmxqy5wh].xml-bestand[/b:lmxqy5wh]
[code:lmxqy5wh]
&lt;?php
header &#40;&quot;Content-Type&#58; text/xml&quot;&#41;;
echo '&lt;?xml version=&quot;1&#46;0&quot; encoding=&quot;ISO-8859-1&quot; ?&gt;';

mysql_connect&#40;&quot;localhost&quot;,&quot;gebruikersnaam&quot;,&quot;wachtwoord&quot;&#41; or die&#40;&quot;MySQL connectie mislukt&#46;&quot;&#41;;
mysql_select_db&#40;&quot;database&quot;&#41; or die&#40;&quot;Selecteren van database mislukt&#46;&quot;&#41;;

$query = &quot;SELECT * FROM database ORDER BY &#40;id&#41; DESC LIMIT 5&quot;;
$res = mysql_query&#40;$query&#41;;

$num = mysql_num_rows&#40;$res&#41;;
if&#40;$num == 0&#41;
&#123;
exit;
&#125;
else
&#123;
// Eerst even laten weten welke rss versie het is
echo &quot;&lt;rss version=&quot;2&#46;0&quot;&gt;n&quot;;
echo &quot;&lt;channel&gt;n&quot;;
// Vul hier een titel in
echo &quot;&lt;title&gt;TITEL&lt;/title&gt;n&quot;;
// Vul hier het adres van je site in
echo &quot;&lt;link&gt;http&#58;//www&#46;adresvanmijn&#46;site/&lt;/link&gt;n&quot;;
// Hier kan je een korte beschrijving geven van jouw pagina
echo &quot;&lt;description&gt;Hier kan je een korte beschrijving geven van jouw pagina&lt;/description&gt;n&quot;;

while&#40;$sql = mysql_fetch_object&#40;$res&#41;&#41;
&#123;
$blog_title = stripslashes&#40;$sql-&gt;titel&#41;;
$blog_link = &quot;********&quot;&#46;$sql-&gt;id;
$blog_description = stripslashes&#40;$sql-&gt;kortbericht&#41;;
echo &quot;&lt;item&gt;n&quot;;
echo &quot;&lt;title&gt;&quot;&#46;$blog_title&#46;&quot;&lt;/title&gt;n&quot;;
echo &quot;&lt;link&gt;&quot;&#46;$blog_link&#46;&quot;&lt;/link&gt;n&quot;;
echo &quot;&lt;description&gt;n&quot;;
echo $blog_description;
echo &quot;&lt;/description&gt;n&quot;;
echo &quot;&lt;/item&gt;n&quot;;
&#125;
echo &quot;&lt;/channel&gt;n&quot;;
echo &quot;&lt;/rss&gt;n&quot;;
&#125;
?&gt;
[/code:lmxqy5wh]

[b:lmxqy5wh][Opmerking]Mochten er reacties komen, vanavond zal ik ze niet beantwoorden, aangezien ik niet online ben.[/Opmerking][/b:lmxqy5wh]
nr11
Nieuwe Gebruiker
Berichten: 0
graphgraph
Gebruiker offline Klik hier om het gebruikersprofiel van deze gebruiker te zien
De Administrator heeft publieke schrijf toegang geblokkeerd.
 
#2095
6 Jaren, 4 Maanden geleden Karma: 0
Zeer goede tutorial! Meer dan logisch nadenken is dit niet, maar het is wel handig. Als ik eens tijd vind ga ik er zeker gebruik van maken.Ik kan het namelijk koppelen aan m'n huidig nieuwssysteem. Het bericht dat in &lt;description&gt;komt, kort ik dan in met een zelfgeschreven functie
wimvd
Nieuwe Gebruiker
Berichten: 0
graphgraph
Gebruiker offline Klik hier om het gebruikersprofiel van deze gebruiker te zien
De Administrator heeft publieke schrijf toegang geblokkeerd.
 
#2096
6 Jaren, 4 Maanden geleden Karma: 0
pft ik vond mijn scriptje mooier

Voor de rest eigenlijk vrij eenvoudig script
_arno_
WMS Fan
Berichten: 16
graphgraph
Gebruiker offline Klik hier om het gebruikersprofiel van deze gebruiker te zien
De Administrator heeft publieke schrijf toegang geblokkeerd.
 
#2097
6 Jaren, 4 Maanden geleden Karma: 0
[quote=&quot;_arno_&quot;:ehlwgp4d]pft ik vond mijn scriptje mooier

Voor de rest eigenlijk vrij eenvoudig script[/quote:ehlwgp4d]

Goh, heb nog eens duidelijk gekeken en dat van jou is ook om je eigen feed te maken... Had alleen die andere gezien...
nr11
Nieuwe Gebruiker
Berichten: 0
graphgraph
Gebruiker offline Klik hier om het gebruikersprofiel van deze gebruiker te zien
De Administrator heeft publieke schrijf toegang geblokkeerd.
 
#2178
6 Jaren, 3 Maanden geleden Karma: 0
Ik laat me inspireren op het script van Nr11 waaraan ik zelf ook al had gedacht. Alleen dat van die .htaccess wist ik niet, maar is wel cruciaal om het ding aan het werk te krijgen. Dit weekend verschijnt de automatisch gegenereerde RSS-feed op de site!
wimvd
Nieuwe Gebruiker
Berichten: 0
graphgraph
Gebruiker offline Klik hier om het gebruikersprofiel van deze gebruiker te zien
De Administrator heeft publieke schrijf toegang geblokkeerd.
 
#2184
6 Jaren, 3 Maanden geleden Karma: 0
[quote=&quot;webmaster&quot;:2g64ucsl]Ik laat me inspireren op het script van Nr11 waaraan ik zelf ook al had gedacht. Alleen dat van die .htaccess wist ik niet, maar is wel cruciaal om het ding aan het werk te krijgen. Dit weekend verschijnt de automatisch gegenereerde RSS-feed op de site![/quote:2g64ucsl]

Dat is nou nog eens mooi nieuws!!!
nr11
Nieuwe Gebruiker
Berichten: 0
graphgraph
Gebruiker offline Klik hier om het gebruikersprofiel van deze gebruiker te zien
De Administrator heeft publieke schrijf toegang geblokkeerd.
 
Ga naar bovenkantPagina: 12
Moderators: Rik, Roy