Loading...   Upload Image

Rss 2.0 Feed erstellen mittels SQL DatenbankTutorials » PHP/MySQL Tutorials » Rss 2.0 Feed erstellen mittels SQL Datenbank

Verfasst von Alice am 07.05.2008 - wurde schon 18843 mal gelesen

Kategorie: PHP/MySQL
Bewertung:
11x bewertet
Schwierigkeit: mittel
Kommentare: [ 12 ]

Tag - Schlagwort Rss Tag - Schlagwort Feed Tag - Schlagwort PHP Tag - Schlagwort Datenbank Tag - Schlagwort SQL

Rss 2.0 Feed erstellen mittels SQL Datenbank - Tutorial

Ich wurde gefragt, wie ich meine RSS-Feed's erstellt habe.

Das geht eigentlich recht einfach, man benoetigt nur eine MySql Datenbank,
aus der die Daten fuer das Feed abgerufen werden koennen und ein paar PHP Kenntnisse.

Hier ein einfaches Beispiel fuer ein Rss Feed der News.

Nehmen wir an die Datenbank Tabelle traegt die Bezeichnung 'news' und enthaelt folgende Spalten:
-------------------------------------------
ID | autor | title | news | date |
-------------------------------------------

- ID => ID des Newseintrags
- autor => Namen des Newsschreibers
- titel => Titel des Newsbeitrags
- news => Der Newstext
- date => das Datum des Newsbeitrag, an dem dieser verfasst wurde

Wir erstellen eine neue Datei in unserem Editor, diese nennen wir rss.php

Diese Datei begluecken wir nun mit folgendem Inhalt:
<?php header("Content-type: text/xml"); 
echo '<'.'?xml version="1.0" encoding="ISO-8859-1"?'.'>'; ?> 
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> 

<channel>
    <title>Title deines RSS Feeds</title> 					// Feed Titel
    <language>de</language>				  					// Language
    <link>http://deine-seite.de</link>	  					// Adresse woher der Feed kommt	
    <description>Kurze Beschreibung des Feeds</description>	// Beschreibung des Feeds
    <copyright>Copyright <?php date(y); ?> deine-seite.de</copyright>		// Copyright

<?php 

$host = "localhost"; // Adresse des Datenbankservers, fast immer localhost
$user = ""; 		 // Ihr MySQL Benutzername
$pass = ""; 		 // Ihr MySQL Passwort
$dbase = ""; 	     // Name der Datenbank

$connection = mysql_connect("$host" , "$user" , "$pass") OR DIE ("Keine Verbindung zu der Datenbank moeglich.");
$db = mysql_select_db($dbase , $connection) or die ("Auswahl der Datenbank nicht moeglich.");

// Datenbankabfrage
$query = "SELECT id, autor, title, news, date FROM news ORDER BY id DESC LIMIT 5";    
$result = mysql_query($query, $connection) or die (mysql_error()); 

// Ausgabe der Daten
while ($row = mysql_fetch_array($result)){ 
	$id = $row['id']; 
	$autor = $row['autor']; 
	$title = $row['title']; 
	$news = $row['news']; 
	$pubdate = strtotime($row['date']);
	$pubdate = date(r, $pubdate); 	
?> 
	<item>
		<title><?php echo $title; ?></title>
	    <link>http://deine-seite.de/news.php?id=5</link>
	   	<guid isPermaLink="false">http://deine-seite.de/news.php?id=5</guid>
	   	<author><?php echo $autor; ?></author>
	    <pubDate><?php echo $pubdate; ?></pubDate>
	    <description><![CDATA[ <?php echo $news; ?> ]]></description>
	</item>
<?php } /* close while*/ ?>

</channel>
</rss>


Als erstes definieren wir den Header dieser Datei,
damit diese auch als XML Datei interpretiert wird.

Mit header("Content-type: text/xml") geben wir an,
dass es sich hier um eine XML Datei handelt.
Und mit echo '<'.'?xml version="1.0" encoding="ISO-8859-1"?'.'>'; bestimmen wir die XML Version.

Der <rss> Tag <rss version="2.0"> gibt Auskunft ueber die verwendete RSS Version.

Mit dem <channel> Tag, leiten wir den Inhalts-Bereich unseres Feeds ein.

Der <title> Tag, ist fuer den Titel des Rss Feeds zustaendig.
Der <language> Tag definiert die Sprache die im Feed verwendet wird (nicht zwingend erforderlich)
Der <link> Tag gibt von welcher Seite des Feed stammt.
Der <description> Tag enthalet die Beschreibung unseres Feeds
Der <copyright> Tag gibt auskunft ueber das Copyright (nicht zwingend erforderlich)

Eine schoene Auflistung, der erforderlichen Elemente eines Rss 2.0 Feeds,
gibt es hier => RSS 2.0 at Harvard Law

Die Variablen $host, $user, $pass, sowie $dbase enthalten die Daten,
die zum Aufbau der Datenbankverbindung benoetigt werden.

Dann nehmen wir mittels $connection = mysql_connect("$host" , "$user" , "$pass") Verbindung zur Datenbank auf,
sollte dies nicht moeglich sein,
so wird das Skript mit OR DIE ("Keine Verbindung zu der Datenbank moeglich."); abgebrochen und eine Fehlermeldung ausgegeben.

Mit $db = mysql_select_db($dbase , $connection) waehlen wir unsere Datenbank aus,
sollte diese nicht verfuegbar sein kommt or die ("Auswahl der Datenbank nicht moeglich."); zum Einsatz,
bricht das Skript ab und gibt eine Fehlermeldung aus.

Mit $query = "SELECT id, autor, title, news, date FROM news ORDER BY id DESC LIMIT 5";
$result = mysql_query($query, $connection) or die (mysql_error());

fragen wir die letzen 5 Eintraege aus unserer Tabelle ab

Es folgt eine While-Schleife while ($row = mysql_fetch_array($result)){,
die fuer die Ausgabe der Daten zustaendig ist.
Danach definieren wir die Variablen, die unsere benoetigten Daten aus der DB enthalten.

Die doppelte definierung von $pubdate wird benoetigt,
um aus dem Datum ein Datum im RFC-822 Standard zu erzeugen!

Der <item> Tag leitet die Ausgabe des Newsbeitrags ein (Newsbeitrags-Bereich)

Der <title> Tag <title><?php echo $title; ?></title> definiert den Titel des Newsbeitrags

Der <link> Tag sollte einen Permalink enthalten, z.B. http://deine-seite.de/news.php?id=5, muss also angepasst werden!

<guide> definiert ebenfalls die URL unter der der Artikel verfuegbar ist, muss also auch angepasst werden,
kommt aber hier nur zum Einsatz, wenn der <link> Tag nicht verfuegbar ist.

<author><?php echo $autor; ?></author> gibt den Autor des Newsbeitrags an

<description><![CDATA[ <?php echo $news; ?> ]]></description> gibt dann den Newstext aus.

Das <![CDATA[ ... ]]> ist von Noeten, wenn der Newsbeitrag HTML Tags enthaelt,
die dargestellt werden sollen, wie z.B Bilder.

Und </item> schliesst dann den Newsbeitrags-Bereich wieder

Auch der <channel> Tag wird mit </channel> wieder geschlossen und zuletzt dann der <rss> Tag noch mit </rss>

Es sollte stehts darauf geachtet werden, dass das Rss Feed keine Fehler enthaelt,
einen Moeglichkeit das Rss Feed auf Fehler zu pruefen ist z.B. der Feed Validator

Und wie machen wir nun einen Browser auf unser Rss Feed aufmerksam?


Dazu packen wir folgenden Code in den Head-Bereich (zwischen <head> und </head>) unserer Webseite:

<link rel="alternate" type="application/rss+xml" title="Titel des RSS Feeds" href="Adresse-zum-Feed" />

Kommentar schreibenHinterlasse einen Kommentar

Du musst angemeldet sein, um einen Kommentar zu hinterlassen...

Du bist noch kein Mitglied von Alice-Grafixx.de?
Dann kannst du dich hier kostenlos registrieren ...


       ALL-INKL.COM - Webhosting Server Hosting Domain Provider