PHP: Własny kanał RSS

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.

Comments

Netteria.net

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

Reply

Leave a Comment

11 + twenty =