Dieser Artikel beschreibt, wie man seinen eigenen RSS-feed mittels PHP-Script aus MySQL-Daten generiert.
Du benötigst eine MySQL-Datenbank-Tabelle mit Feldern für
- Titel der Nachrichten
- Inhalt der Nachricht
- URL zur Nachricht
- TIMESTAMP
PHP-Script
Erstelle die Datei rss.php mit dem Inhalt:
<nowiki> <?php header("Content-Type: text/xml"); // --------------------- DB-Daten -------------------------- $dbname = ""; // ersetze mit deinen Daten (Datenbank) $dbuser = ""; // ersetze mit deinen Daten (User) $dbpass = ""; // ersetze mit deinen Daten (Passwort) $dbhost = "localhost"; // sollte/kann so belassen werden. $db = @mysql_connect($dbhost, $dbuser, $dbpass) or die(mysql_error()); if ($db) mysql_select_db($dbname, $db); //------------------- ------------------------------------- // --- eine Funktion um XMLtags zu generieren ----------- function tag($name, $content) { return "<$name><![CDATA[$content]]></$name>\r\n"; } // -------------------------------------------------- echo '<?xml version="1.0" encoding="ISO-8859-1" ?>' . "\r\n"; echo "<rss version=\"0.91\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\r\n"; echo "<channel>\r\n"; echo "<title></title>\r\n"; // ergänze mit dem Namen Deines FEEDs echo "<link></link>\r\n"; // ergänze mit der URL auf Deine Homepage echo "<description></description>\r\n"; // ergänze mit einer kurzen Inhaltsbeschreibung des FEEDs echo "<language>de-de</language>\r\n"; echo "<image></image>\r\n\r\n"; $spruch = "SELECT * FROM tablename"; // <- ersetze "tablename" mit deinen Daten $spruch .= " ORDER BY timestamp DESC LIMIT 15"; $result = mysql_query( $spruch, $db ) or die("<b>GetAktuelles failed</b> : " . mysql_error() . " " . $spruch); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $titel = $row['NACHRICHTEN_TITEL']; # erstze mit MySQL-Tabellenfeld für Titel der Nachricht $text = $row['NACHRICHTEN_TEXT']; # erstze mit MySQL-Tabellenfeld für Inhalt der Nachricht $link = $row['link']; # erstze mit MySQL-Tabellenfeld für Link auf die Nachricht $t2 = $row['timestamp']; //-------------------------------- datum und uhrzeit ------------------------------------------ // hier wird der SQL-Timestamp in UNIX-Zeit umgerechnet.... $stunde = $t2[8] . $t2[9]; $minute = $t2[10] . $t2[11]; $sekunde = $t2[12] . $t2[13]; $jahr = $t2[0] . $t2[1] . $t2[2] . $t2[3]; $monat = $t2[4] . $t2[5]; $tage = $t2[6] . $t2[7]; $timestamp = mktime($stunde, $minute, $sekunde, $monat, $tage, $jahr); // oder UNIX_TIMESTAMP Funktion (http://dev.mysql.com/doc/refman/4.0/de/datetime.html) verwenden // (bzw http://dev.mysql.com/doc/refman/4.0/de/date-and-time-functions.html) Sogar auf Deutsch ;) // // ..... um hier den UNIX-timestamp ins pubDate-Format umzuschreiben // $pubtime = strftime("d Y M:%S GMT+01:00", $timestamp); # sollte so aussehen: Fri, 17 Mar 2005 10:16:55 GMT+01:00 $pubtime = date("r", $timestamp); # sollte so aussehen: Fri, 17 Mar 2005 10:16:55 +01:00 // mit 'date' geht man sicher, dass es in das benötigen RFC 2822 Datum formatiert wird ohne von der Sprache (setlocale LC_TIME usw.) beeinfußt zu werden // ------------------------------------------------------------------------------------------- echo "<item>\r\n"; echo tag("title", $titel); echo tag("link", $link); echo tag("description", $text); echo "<pubDate>"; echo $pubtime; # sollte so aussehen: Fri, 17 Mar 2005 10:16:55 +01:00 echo "</pubDate>\r\n"; echo "</item>\r\n\r\n"; } echo "</channel>\r\n"; echo "</rss>\r\n"; </nowiki>
verlinken
Damit z. B. Firefox unten rechts schon auf das Vorhandensein eines RSS-Feeds hinweisen kann, sollte man folgenden Code in den Head jeder Seite (bzw. Template) einfügen:
<link rel="alternate" type="application/rss+xml" title="Meine Firma - News" href="http://www.meinedomain.com/pfad/rss.php" />