Создание RSS-канала с базой данных SQL

Для создания RSS-канала с SQL-запросами мы будем использовать в качестве примера широко распространенный формат Wordpress. У Wordpress, конечно, есть генератор потока, но цель является дидактической, и пример может служить основой для создания более персонализированного генератора. Он может применяться к базам данных, отличным от базы данных Wordpress, путем настройки имен столбцов.

Определение теоретической таблицы

Статьи содержат по крайней мере следующие данные:

  1. Ссылка, URL-адрес страницы.
  2. Название.
  3. Описание, краткое содержание статьи.
  4. Дата.
  5. Текст статьи.

Возможно, авторское имя, изображение.

С помощью phpMyAdmin мы имеем представление о структуре таблиц нашей базы данных статей в блоге.

Нам интересна таблица сообщений, в которой находятся билеты, если выбранная приставка - блог, название будет blog_posts.
В структуре много данных, которые мы использовать не будем. Строка post используется как приставка к большинству колонок, так что нас интересуют следующие (имя с последующим типом данных):

  1. post_modified datetime - дата последнего изменения.
  2. post_title текст: заголовок.
  3. post_excerpt текст: (отрывок) резюме.
  4. guid text - уникальный идентификатор страницы, которая также является именем файла.
  5. post_content текст: содержание
  6. .

URL-адрес создается под WordPress из названия и адреса сайта, но для этого требуется создать идентификатор, размещенный в GUID, поэтому нам будет достаточно взять последний обратно, чтобы получить ссылку на страницу.

Однако в отсутствие резюме необходимо будет вернуться к первым строкам текста статьи.

Поэтому у нас будет следующий стол:

guid
post_title
post_modified
post_content
https://www.iqlevsha.ru/
RSS и SQL
2008-01-03 17:24:01
Создать RSS-канал...
...
     

С таким количеством строк, как есть в блоге. Эта таблица будет использоваться в качестве отправной точки для определения запроса.

Определение запроса сценарием PHP

Сценарий содержит следующие шаги:

  1. Подключение к серверу.
  2. Выбор базы.
  3. Чтение статей согласно заданному условию, например, последних размещенных n. Результат будет в таблице.
  4. Запись XML-файла в формат RSS 2.0.
  5. Затем отображается поток.

Подключение к серверу

Для работы PHP требуются имя сервера, логин пользователя и пароль, эти данные позволили установить Worpress:

$connexion = mysql_connect('mysql5-1', 'user', 'pass')

Имя сервера обычно имеет форму mysql... Затем следует код версии.

Выбор базы

Номер подключения, возвращенный предыдущей функцией, будет использоваться в каждой транзакции с сервером.

$result = mysql_select_db('mabase', $connexion); 

Возвращенное значение является истинным, если база найдена, если нет - false.

Чтение статей

Команда SELECT... С... WHERE из SQL позволяет вернуть набор элементов в соответствии с заданным условием.
Аргументы:

  1. Столбцы, содержимое которых нужно прочитать. Можно указать столбец, список столбцов, разделенных запятой, или символ *, чтобы взять данные из всех столбцов. В этом примере мы приведем список колонок из предыдущей теоретической таблицы, потому что нас интересуют только эти поля.
    SELECT guid, post_title, post_modifier, post_content
  2. Имя таблицы является вторым параметром в blog_posts экземпляре.
    ВЫБРАТЬ... С blog_posts
  3. Условие в нашем примере - последние 10 статей. Других условий пока не назовем, пункт WHERE будет опущен. Напротив, статьи будут классифицироваться по срокам вниз, а их число будет ограничено 10.
  4. Предложение ORDER BY позволяет классифицировать детали по датам с максимальным числом. А параметр DESC указывает, что порядок инвертируется, поэтому из последней статьи, а не из первой.
    ВЫБРАТЬ... С... ORDER BY post_modified DESC
  5. Максимальное количество элементов задается предложением LIMIT.
    ВЫБРАТЬ... С... ORDER BY post_modified DESC LIMIT 10

Поэтому PHP-код будет выглядеть следующим образом:

$command = "SELECT guid, post_title, post_modified, post_content FROM blog_posts ORDER BY post_modified DESC LIMIT 10";
$items = mysql_query($command, $connexion);

Теперь у нас есть содержимое статей в двухмерной таблице, на первом уровне каждая строка таблицы, а на втором - данные каждого столбца.

[0]=> ligne 1
   [0]=> guid
   [1]=> post_title
   [2]=> post_modified
   [3]=> post_content
[1]=> ligne 2
   [0]=> guid
   [1]=> etc...

Осталось извлечь данные из таблицы.

Использование базовых данных

Фактически, вызов функции mysql_query возвращает ресурс, идентификатор, соответствующий найденным данным, остается извлечь данные, что мы будем делать с функцией PHP mysql_fetch_assoc.

Эта функция возвращает строку таблицы, в которой значения связаны с ключами, содержащими имена столбцов.
Он итеративно используется для получения каждой строки таблицы.

while($article = mysql_fetch_assoc($items))
{
   $url= $article["guid"];
   $title= $article["post_title"];
   $date= $article["post_date"];
   $content= $article["post_content"];
}

Мы извлекли данные из статей и теперь имеем, что нужно для создания XML-файла потока.

Создать RSS-файл под PHP 5

С помощью RSS-библиотеки редактора RSS ARA создать RSS-файл можно с помощью нескольких функций:

ARAFeed($title, $url, $desc, $date)

Создание объекта потока. Название - название блога, за ним следует его URL, описание и дата ленты.

ARAItem($title, $url, $content, $date)

Добавление элемента в поток с ранее извлеченными данными.

save($nomfichier)

Сохранение созданного потока в файл.

Поэтому полный код генерации потока будет выглядеть следующим образом:

$rss = ARAItem($title, $url, $content, $date);
while($article = mysql_fetch_assoc($items))
{

   $url= $article["guid"];
   $title= $article["post_title"];
   $date= $article["post_date"];
   $content= $article["post_content"];
   $rss->ARAItem($title, $url, $content, $date)
}
$rss->save($nomfichier),

Этот код дополняется функциями доступа к базе данных, что можно увидеть в исходнике ниже.

Показать поток

Созданный поток можно увидеть напрямую, выдав его URL браузеру.

RSS-плеер может использоваться для отображения канала, созданного на веб-странице.

Загрузить исходный код

Генератор SQL RSS.

Форум

Учебник RSS SQL и Wordpress, отображение даты

25-07-2009 09:43:12

Гейлоты

Здравствуйте, я последовал этому tuto для создания потока видео, но у меня есть две маленькие проблемы. - Во-первых, у меня ошибка кодировки: [url] http://www.team-ncis.com/videos/RSS/rss.xml [/url] Если я перейду на ISO здесь :
 $rss = '<?xml version="1.0" encoding="UTF-8" ?>'."\n"[
; Ошибка при кодировке заголовков записей. - Во-вторых, это часы, которые остаются в 2:00, и это с любым временем входа. Если у тебя есть идеи или нужна дополнительная информация.:) Заранее спасибо! ^ ^
27-07-2009 08:59:31

веб-мастер

Привет Браузеры не отображают непосредственно содержимое поля даты и времени pabDate RSS 2.0, а делают его интерпретацией, отсюда ошибочное отображение. Для переформатирования даты, хранящейся в поле SQL в WordPress, которая правильно отображает информацию, была выпущена новая версия. По этому случаю в скрипт были внесены незначительные изменения с добавлением переменной $ suffix и заменой $ user на $ dbname для имени базы данных. Что касается формата названий, для меня правильно отображается лента ссылки выше .
27-07-2009 19:49:10

Гейлоты

Теперь даты больше не отображаются в Firefox, а хорошо работают в IE. Это пока не очень серьезно, но что-то не так под FF у меня дома. Я прилагаю к вам свои файлы, чтобы увидеть изменения в кодировке. Если это не говорит с вами, это не очень серьезно. Все равно спасибо. Себастьен
27-07-2009 19:51:23

веб-мастер

Отсутствует «GMT» для дескриптора браузера.
$rss .= "<pubDate>$date"." GMT</pubDate>\n";
Скрипт работает под всеми браузерами нормально.
28-07-2009 09:53:52

Гейлоты

Спасибо, это работает. Я сделал изменения, и это хорошо. В любом случае, спасибо за время, проведенное по электронной почте, чтобы помочь мне, очень приятно. Молодцы за туту. ^ ^