Препарируем RSS Никита Кислицин Хакер, номер #076, стр. 076-120-3 Сейчас мы с тобой займемся тем, что напишем свое собственное web-приложение на PHP, которое будет экспортировать данные в RSS. Перейдем к конкретике Совсем недавно я получил трогательное письмо из одного города в западной Сибири, где живет Василий Григорьевич – пенсионер, который бросил десять лет назад курить, делает зарядку по утрам, воспитывает внуков, однако в столь преклонном возрасте он решил не жить на скромную пенсию, а занялся бизнесом - разведением уругвайских тушканов, спрос на которых непреклонно растет. В определенный момент Василий Григорьевич понял, что большая часть его покупателей активно пользуется инетом и надо предоставить ей возможность следить за жизнью питомцев, давать рекомендации по Сети, ну и вообще, осуществлять электронную поддержку. Внук сделал ему сайт, однако некоторые клиенты сказали, что им было бы удобно следить за новостями, если бы они распространялись в RSS. Поскольку внучек ничего об этом не знал, Василий Григорьевич попросил меня о помощи и я не смог отказать дедушке. Сейчас мы напишем крутой RSS-блог, в котором будут постится новости из жизни питомцев Василия Григорьевича. Архитектура блога Да ну, какая тут архитектура. Все просто. В базе данных mySQL есть таблица rssblog, которая имеет следующую структуру: CREATE TABLE rssblog (pid int not null primary key auto_increment, pubDate date, title text, descr text); Соответственно, в этой табличке хранятся посты, которые нам надо выводить в RSS-ленту. Написать скрипт, который будет добавлять новости в таблицу – это элементарно и мы с тобой это уже не раз проворачивали. Так что я сегодня более подробно расскажу об экспорте данных. Собственно, все очень просто. Скачала элементарным запросом мы выбираем десять последних записей, сортируя их по времени публикации, а затем в цикле по всем возвращенным строкам начинаем строить RSS-документ, жестко следуя описанному формату. В результате несложно получить примерно такую вот функцию: Процедура, строящая RSS-ленту function BuildRss($title, $link, $desc) { $re=mysql_query(“select * from rssblog order by pid desc limit 100”); echo “<?xml version=\"1.0\" encoding=\"windows-1251\" ?>\n”; echo “<rss version=\"2.0\"> <channel> <title>$title</title> # Заголовок ленты <link>$link</link> # Ссылка на сайт <description>$desc</description>”; # Описание ленты while($res=mysql_fetch_array($re)) { # Цикл по всем нужным записям в таблице echo “ <item> # Новый пост <title>$res[title]</title> # Заголовок <link>$res[link]</link> # Ссылка <description>$res[descк]</description> # Описание <pubDate>$res[pubDate]</pubDate> # Дата публикации <guid>$link/content.php?pid=$$res[pid]</guid> # Идентификатор </item>”; } echo “</channel> </rss>”; } Теперь если сохранить эту процедуру в php-скрипте и выполнить ее на сервере, клиенту вернется RSS-документ, который удобнее всего просматривать при помощи специальной программы вроде ActiveRefresh. На скрине ты можешь видеть, каким образом отображаются новости в клиентском софте, да и сам можешь легко это попробовать: адрес ленты http://ired.inins.ru/rss.php. |