RSS за 5 минут — HackZona.Ru

RSS за 5 минут

RSS за 5 минут

Тип статьи:
Со старой ХакЗоны.
Источник:
RSS — Reality Simple Syndication, что означает «Чрезвычайно простое приобритение информации».

Наверное, вам не раз доводилось видет на различных ресурсах в Сети такую симпатичную ораньжевую кнопочку, на которой написано «XML»? Наверное, хотя бы раз точно.Под ней как правило скрывается файл, в котором ало чтго понятно, или, если у вас имеется RSS — клиент, открывается симпатичная лента новостей в удобном для просмотра формате.
Формат RSS является подмножством всем известного языка XML, но, в отличие от XML, чётко определён.
А вот и пример простейшего файла в формате RSS:

[?xml version=«1.0» encoding=«windows-1251» ?]
[rss version=«2.0»]
[channel]
[title]Супесркие новости[/title]
[link]http://www.mysite.com[/link]
[description]Свежайшие новости с моей паги![/description]
[lastBuildDate]11 May 2005 12:14:48 +0300[/lastBuildDate]

[item]
[title]Самая свежая новость[/title]
[link]http://www.mysite.com/news.php?id=12[/link]
[description]Это смая свежая новость на это сайте.Свежее быть не может[/description]
[pubDate]11 may 2005 12:10:12 +0300[/pubDate]
[guid]http://www.mysite.com/news.php?id=12[/guid]
[/item]
[/channel]
[/rss]


Такой вот незателивый файлик.
Теперь разбираем, что и как.
В самом начале идёт обьявление версси xml
[?xml version=«1.0» encoding=«windows-1251» ?]
Затем обьявляется начало ленты RSS.

После этого идёт тэг открытия ленты [channel]
и сразу же за ним блок описания RSS канала

[title>Супесркие новости[/title]
[link]http://www.mysite.com[/link]
[description]Свежайшие новости с моей паги![/description]
[lastBuildDate]11 May 2005 12:14:48 +0300][/lastBuildDate>

[title] название ленты новостей
[link] — ссылка на соответсвующий ленет сайт
[description] описание ленты
[lastBuildDate] дата последнего обновления
Далее под тэгом [item] следует сама новость.
[title] — название новости
[link] — ссылка на соответсвующую старницу
[description] Собствеено текст новости
[pubDate] дата публикации
[guid] уникальный идентификатор, в качестве которого можно так же взять ссылку на страницу

После этого в указанном порядке закрываем открытые теги.И всё, лента готова.

А зачем это?
RSS — штука действительно удобная и полезная вещь.Миллионы людей используют новостные ленты такого типа каждый день.Наличие этой примочки у вас на сайте иногда может значительно повысить посещаемость вашего ресурса(конечно, если у вас действительно стоящие новости)

Пишем скрипт для генерации RSS.
Положим, вы таки решили замутить у вас на сайте RSS.Чтобы 2 раза не бегать, можно замутитьсразу и RSS и обычную ленту новостей.
Юзать будем бд mySQL.
создаём таблицу для ньюсов:

CREATE TABLE news( id int not null primary key
auto_increment, pubDate date, title text, desr text);

А теперь код на РНР, генерящий RSS ленту


$rss = mysql_query(«SELECT * FROM news;»);
echo "[title]".$title."[/title]
[link]".$link."[/link]
[description]".$descr."[/description]";
//В соотв. переменных должны лежать соотв. значения.Читать их можно, к примеру
//из конфиг-файла движка

while($result = mysql_fetch_array($rss))
{
echo "[item]
[title]".$result['title']."[/title]
[link]".$link."/script.php?id=".$result['id']."[/link]
[description]".$result['descr']."[/description]
[pubDate]".$result['pubDate']."[/pubDate]
[giud]".$link."/script.php?id=".$result['id']."[/guid]
[/item]";
}
echo "[/channel][/rss]"

вот и всё, как видите, ничего сложного.
по понятным причинам все треугольные скобки заменены квадратными:)
Нравится
Не нравится

4 комментария

17:16
Вебмастер жжёт=)
14:33
Статья провальная. Начнем с того что БД спроэктирована неверно. например непонятно почему на поле даты нет индекса и почему title идет как text. Оптимизация привыше всего! Далее запрос к БД. Начем с того что юзать шаблон типа "SELECT * FROM" неверно. Не надо говорить мне что в данном случае используются все поля. Подумай о том, чему ты учишь новичков. Еще непонятно как БД будет отдавать данные по запросу. У тебя не стоит ордеров, а значит БД отдаст записи в произвольном порядке. Сортировать мы должны по дате: "ORDER BY pubDate DESC". "DESC" указывает на обратную сортировку. А теперь задумайся что будет если в таблице новостей будет... ну скажем... 10 000 записей? Лимиты надо тсавить... Т.е. в конец sql запроса дописываем "LIMIT 20" в итоге сам запос получается вида
"SELECT id,pubDate,title,desr FROM news ORDER BY pubDate DESC LIMIT 20". Только чо заметил =) "[pubDate]".$link."/script.php?id=".$result['id']."[/pubDate]" это что получается, в качестве даты пишется лин на новость? Ну и как будет воспринимать это RSS читалка? Туда должна писаться дата, причем в формате RFC 2822 если мне не изменяет память. А для этого нужно хранить дату в БД в никсовом формате. Еще неплохо было бы в начале документа указать что это xml файл и читать его нужно как rss, указав версии итп. Т.е.
echo "";
ну и закончу на том, что данной статьей пользоваться нельзя в любом случае. По ней при каждом обращении RSS читалки к вашему скрипту будет осуществляться коннект к БД итп. Зачем, если можно все это убрать в статику, те самым упростить работу сервера. Оптимизация =))) Ну вроде все, что видно не вооруженным глазом =)
10:33
ну ну ну. Уже одним "Где ж таких идиотов набирают..лол:)" ты показываешь свой не профессионализм :) .Насчет pubDate не спорю. Это больше похоже действительно на невнимательность, чем на ошибку :). насчет остального. Ознокомительная статья? Твоя ознакомительная несет грубые ошибки. Мало того, я совсем забл добавить что у тебя нет нужной обработки текстовых полей. Любой RSS ридер отдаст ошибку, если текст из БД удет содержать символ "&". Ну, профессионал, ты можешь мне объяснить почему? Более чем уверен, что нет Ж) титл 65 кил? Да не смеши. титл врядли когда бывает более 2-х предложений. Если ты уже упрощаешь свой пример до предела, то пиши в теории, а практику бредовую оставь себе. Профессионал блин маза фака. Кто тебе это сказал7 Сам придумал? :) Ладно, обойдемся без наездов. Гы, да, я хочу сказать что ты пишешь не правильно :)
16:16
Может сам(То:an0ther) попробуешь статейку сбацать ?