Heute möchte ich euch zeigen, wie man einen funktionierenden, halbwegs validen RSS Feed mit PHP erstellt, bei dem die Daten aus einer Datenbank ausgelesen werden und anschließend in den RSS Feed geschrieben werden.
- Zur Datenbank verbinden
- Header senden
- Grundlegende Informationen über den Feed eingeben
- Die Beiträge ausgeben
- Feed beenden
1. Zur Datenbank verbinden
Als ersters müsst ihr euch einmal zu eurer Datenbank verbinden und die Datenbank auswählen:
1 2 3 4 5 | <?php @mysql_connect("Datenbankhost", "Benutzername","Passwort") or die ("Keine Verbindung zur Datenbank möglich!"); @mysql_select_db("Datenbankname") or die ("Die Datenbank existiert nicht."); |
Die Werte Datenbankhost, Benutzername, Passwort und Datenbankname müsst ihr natürlich mit euren eigenen Daten ersetzen.
2. Den RSS bzw. den XML Header senden
Damit der Browser auch weis, dass unsere PHP Datei eigentlich ein Rss Feed ist und man diesen auch abonnieren kann, müssen wir ihm einen Rss header senden und ihm ausgeben, das es eine Rss – Xml Datei ist:
1 2 3 | header("Content-Type: application/rss+xml");
echo('<?xml version="1.0" encoding="ISO-8859-1"?>');
?> |
3. Die Grundlegenden Informationen über den Feed eingeben
Damit im Browser auch Titel, Beschreibung, .. angezeigt werden, muss dass natürlich eingegeben werden.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> <channel> <atom:link href="LinkzumFeed" rel="self" type="application/rss+xml" /> <title>Euer Titel für den Feed</title> <link>Link zu eurer Homepage</link> <copyright>Euer Name</copyright> <description>Die Beschreibung</description> <language>de-at</language> <pubDate><?php echo(date("r")); ?></pubDate> <image> <url>Adresse zum Bild</url> <title>Titel für das Bild, muss aber gleich sein wie der Titel für den Feed</title> <link>Und die Adresse, zu der das Bild verlinkt sein soll, muss auch gleich sein wie das oben, dass ihr bei 'Link zu eurer Homepage' angegeben hattet</link> </image> |
Wenn ihr kein Bild wollt, könnt ihr den teil von <image> bis </image> weglassen.
4. Die Einträge ausgeben
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php $neuester="select * from EURETABELLE order by zeit DESC limit 10"; $neuester2=mysql_query($neuester); while ($neuester3=mysql_fetch_array($neuester2)) { echo "\n <item> <title>" . $neuester3['titel'] . "</title> <description>".str_replace("–", "–", str_replace("\n", "<br>",$neuester3['beschreibung']))."</description> <link>http://www.banneruploaden.tk/" . $neuester3['link'] . "</link> <guid isPermaLink=\"false\">" . $neuester3['id'] . "</guid> <pubDate>" . date('r',$neuester3['zeit']) . "</pubDate> </item>"; } ?> |
In der Datenbank sollten Zeit, der Titel, Beschreibung, ein Link sowie die ID gespeichert sein. Sollten eure Spaltennamen anders sein, müsst ihr sie in dem Script bei allen Variablen z.B. bei $neuester3['SPALTENNAME'] ersetzen. In der ersten Zeile müsst ihr auch die entsprechenden Änderungen vornehmen.
5. Abschluss des Feeds
Damit der Browser auch weis, wann ein Feed zu Ende ist, müssen wir ihm das mitteilen:
1 2 | </channel> </rss> |
Die Datei muss mit der Endung .php abgespeichert werden, nur Dateiname ist egal, z.B. rss.php
Nun solltet ihr, wenn ihr alles richtig gemacht habt, einen funktionierenden Feed haben.


Ich mache das ganze ohne Datenbank o.O
Ich mache einfach jedesmal ein neues item bzw. dupliziere ein altes und schreibe den neuen Content dazu!
Funktioniert bisher ohne Probleme!
Und der RSS-Parser ist auch auf dieses System ausgelegt!
@Renzio:
So musst du aber jedes mal den Feed neu hochladen.
Außerdem ist MySQL garnicht mal so schwer…
ich habe in wenigen Minuten alle meine RSS-Posts in einer Datenbank verewigt ^^
Der RSS-Parser müsste dann ja die Ausgabe der PHP-Befehle bearbeiten!
ARGH!
Habe gerade einen XML Fehler gehabt und man hat MEIN PASSWORT GESEHEN!