Własny kanał RSS w PHP

Kolejny, programistyczny, wpis „ku pamięci”.

Poniższe rozwiązanie generuje prosty kanał RSS, który jest bezbłędnie interpretowany przez większość czytników (wliczając Google Reader).

Plik db.php przechowuje ustawienie dostępu do bazy MySQL.


//db.php

<?php

$user 	= "username";
$pass 	= "password";
$db		= "localhost";
$dbname    = "dbname";
$polaczenie  = mysql_connect($db, $user, $pass) or die('Brak połączenia z serwerem MySQL. Błąd: '.mysql_error());
$baza 	 = mysql_select_db($dbname, $polaczenie);

?>

Plik rss.php jest odpowiedzialny za wygenerowanie odpowiedniego pliku XML – po zaimplementowaniu poniższego kodu wystarczy dodać http://www.twojastrona.pl/rss.php do czytnika.


//rss.php
<?php

header('Content-Type: application/xml; charset=utf8');
include('db.php');
$rss .= "<?xml version=\"1.0\" encoding=\"utf8\"?>\r\n";
$rss .= "<rss version=\"2.0\">\r\n";
$rss .= "<channel>\r\n";
$rss .= "<title>Tytył</title>\r\n";
$rss .= "<link>http://www.twojastrona.pl</link>\r\n";
$rss .= "<description>Opis......</description>\r\n";
$rss .= "<image>\r\n";
$rss .= "<title>Logo</title>\r\n";
$rss .= "<link>http://www.twojastrona.pl</link>\r\n";
$rss .= "<url>http://www.twojastrona.pl/logo.jpg</url>\r\n";
$rss .= "</image>\r\n";
echo $rss;
$db_query = 'SELECT * FROM blog ORDER BY id DESC';
mysql_query('SET character_set_connection=utf8');
mysql_query('SET character_set_client=utf8');
mysql_query('SET character_set_results=utf8');
$db_wynik = mysql_query($db_query) or die(mysql_error());
while($row = mysql_fetch_array($db_wynik))
{
echo '	<item>
<title>'.$row["tytul"].'</title>
<link>'.$row["link"].'</link>
<description>'.$row["wpis"].'</description>
</item>';
}
?>
</rss>
</xml>

Uwaga: Powyższy kod jest strasznie prymitywny, ale … działa.

Na koniec polecam bardziej eleganckie (dość rozbudowana klasa obsługująca kanały RSS napisana w PHP) rozwiązanie znalezione w sieci: Link

Zostaw komentarz


Podpowiedź - możesz użyć tych HTML tagów i atrybutów:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>