PHP: Własny kanał RSS

Autor: Arkadiusz Tobiasz 1 kwietnia 2010

RSS to rodzina formatów sieciowych, które obsługiwane są z wykorzystaniem języka XML i służą do publikacji często zmieniających się treści. Format ten wykorzystywany jest głównie przy prezentacji newsów czy wpisów na blogach. Dzięki dodaniu przez użytkownika naszego kanały RSS do swojego czytnika może on być na bieżąco z informacjami, które są zamieszczane na naszym serwisie. W tym wpisie pokażę w jaki sposób można z wykorzystaniem PHP napisać prosty skrypt dzięki któremu stworzymy własny kanał RSS.

Na początku musimy stworzyć tabelę newsów, z której będziemy wyciągać dane na naszą stronę jak i do kanału RSS.

1
2
3
4
5
6
7
8
9
CREATE TABLE IF NOT EXISTS `news` (
  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `title` VARCHAR(100) NOT NULL DEFAULT '',
  `header` text NOT NULL,
  `text` text NOT NULL,
  `views` INT(10) NOT NULL DEFAULT '0',
  `date` DATE NOT NULL DEFAULT '0000-00-00',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin2 ;

Wypełnijmy jeszcze tabelę przykładowymi wpisami:

1
2
INSERT INTO `toar_news` (`id`, `title`, `header`, `text`, `views`, `date`) VALUES
(1, 'Start strony', 'Miło mi oznajmić start pierwszej strony.', 'W najbliższym czasie znajdziecie tutaj artykuły poświęcone wielu ciekawym rzeczom.', 847, '2007-12-16')

Teraz czas na kod skryptu. Pominę etap łączenia z bazą danych, bo podejrzewam, że będziesz potrafił to napisać. Jeśli nie, to odsyłam do notki o połączonych polach select z wykorzystaniem Ajax’a, gdzie jest podany odpowiedni kod.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
include("db.php");     // połączenie z bazą danych

header("Content-Type: text/xml");

$result = mysql_query("SELECT id, title, header, date FROM news ORDER BY date DESC LIMIT 10");

echo "<?xml version=\"1.0\" encoding=\"ISO-8859-2\"?>\n\n";
echo "<!DOCTYPE rss PUBLIC \"-//Netscape Communications//DTD RSS 0.91//EN\"\n";
echo " \"http://my.netscape.com/publish/formats/rss-0.91.dtd\">\n\n";
echo "<rss version=\"0.92\">\n\n";
echo "<channel>\n";
echo "<title>Nazwa strony</title>\n";
echo "<link>http://nazwastrony.pl</link>\n";
echo "<description>Opis strony</description>\n";
echo "<language>pl</language>\n\n";

while ($row = mysql_fetch_array($result)) {
    $rnid = intval($row['id']);
    $rtitle = $row['title'];
    $rtext = $row['header'];
    $rdate = $row['date'];
    echo "<item>\n";
    echo "<title>".$rtitle."</title>\n";
    echo "<link>".$url."/index.php?id=news&amp;op=read&amp;nid=$rnid</link>\n";
    echo "<description>".htmlspecialchars($rtext, ENT_QUOTES)."</description>\n";
    echo "</item>\n\n";
}
echo "</channel>\n";
echo "</rss>";
?>

W drugiej linijce załączamy skrypt do połączenia z bazą danych. Od ósmej linijki zaczynamy generować wszystkie elementy wykorzystując język XML tak, aby czytnik RSS mógł odczytywać informacje pochodzące z naszego kanału. W osiemnastej linijce znajduje się pętla, która wyświetla dziesięć ostatnich newsów w formie podlinkowanego tytułu oraz opisu.

Skrypt w działaniu możecie zobaczyć tutaj.

Jeden komentarz

  1. Netteria.net napisał(a):

    Krótko i na temat. Fajny wpis gratuluję.

Odpowiedz

 

Arkadiusz Tobiasz student Akademii Ekonomicznej im. Karola Adamieckiego w Katowicach na specjalnościach informatyka ekonomiczna oraz rachunkowość. Więcej...

jQuery Validation i funkcja remote

Jakiś czas temu zwrócił się do mnie użytkownik z problemem. Chodzi o to, że korzysta on z pluginu walidacji jQuery, […]

Zend Framework: integracja z Uploadify

W tym wpisie postaram się przedstawić Wam w jaki sposób zintegrować skrypt Uploadify z Zend Frameworkiem. Dzięki temu będziemy mogli […]

Javascript: Czasowe wyświetlanie reklamy

Czasami chcemy, aby na pewnym elemencie naszej strony wyświetlała się reklama przez jakiś czas, a następnie zniknęła. W tym wpisie […]

Linux: backup wszystkich baz danych MySQL

Swego czasu pisałem o tym jak z poziomu konsoli można szybko i przyjemnie zrobić backup bazy MySQL. Wszystko jest ładnie […]