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" />

Weblinks


Zuletzt geändert am 02.11.2005 09:37 Uhr ( Besuche)

© 2004 – 2024 ApfelWiki

Impressum - Datenschutz

cb