Создание RSS-канала с базой данных SQL
Для создания RSS-канала с SQL-запросами мы будем использовать в качестве примера широко распространенный формат Wordpress. У Wordpress, конечно, есть генератор потока, но цель является дидактической, и пример может служить основой для создания более персонализированного генератора. Он может применяться к базам данных, отличным от базы данных Wordpress, путем настройки имен столбцов.
Определение теоретической таблицы
Статьи содержат по крайней мере следующие данные:
- Ссылка, URL-адрес страницы.
- Название.
- Описание, краткое содержание статьи.
- Дата.
- Текст статьи.
Возможно, авторское имя, изображение.
С помощью phpMyAdmin мы имеем представление о структуре таблиц нашей базы данных статей в блоге.
Нам интересна таблица сообщений, в которой находятся билеты, если выбранная приставка - блог, название будет blog_posts.
В структуре много данных, которые мы использовать не будем. Строка post используется как приставка к большинству колонок, так что нас интересуют следующие (имя с последующим типом данных):
- post_modified datetime - дата последнего изменения.
- post_title текст: заголовок.
- post_excerpt текст: (отрывок) резюме.
- guid text - уникальный идентификатор страницы, которая также является именем файла.
- post_content текст: содержание .
URL-адрес создается под WordPress из названия и адреса сайта, но для этого требуется создать идентификатор, размещенный в GUID, поэтому нам будет достаточно взять последний обратно, чтобы получить ссылку на страницу.
Однако в отсутствие резюме необходимо будет вернуться к первым строкам текста статьи.
Поэтому у нас будет следующий стол:
guid
|
post_title
|
post_modified
|
post_content
|
https://www.iqlevsha.ru/
|
RSS и SQL
|
2008-01-03 17:24:01
|
Создать RSS-канал...
|
...
|
С таким количеством строк, как есть в блоге. Эта таблица будет использоваться в качестве отправной точки для определения запроса.
Определение запроса сценарием PHP
Сценарий содержит следующие шаги:
- Подключение к серверу.
- Выбор базы.
- Чтение статей согласно заданному условию, например, последних размещенных n. Результат будет в таблице.
- Запись XML-файла в формат RSS 2.0.
- Затем отображается поток.
Подключение к серверу
Для работы PHP требуются имя сервера, логин пользователя и пароль, эти данные позволили установить Worpress:
$connexion = mysql_connect('mysql5-1', 'user', 'pass')
Имя сервера обычно имеет форму mysql... Затем следует код версии.
Выбор базы
Номер подключения, возвращенный предыдущей функцией, будет использоваться в каждой транзакции с сервером.
$result = mysql_select_db('mabase', $connexion);
Возвращенное значение является истинным, если база найдена, если нет - false.
Чтение статей
Команда SELECT... С... WHERE из SQL позволяет вернуть набор элементов в соответствии с заданным условием.
Аргументы:
- Столбцы, содержимое которых нужно прочитать. Можно указать столбец, список столбцов, разделенных запятой, или символ *, чтобы взять данные из всех столбцов. В этом примере мы приведем список колонок из предыдущей теоретической таблицы, потому что нас интересуют только эти поля.
SELECT guid, post_title, post_modifier, post_content - Имя таблицы является вторым параметром в blog_posts экземпляре.
ВЫБРАТЬ... С blog_posts - Условие в нашем примере - последние 10 статей. Других условий пока не назовем, пункт WHERE будет опущен. Напротив, статьи будут классифицироваться по срокам вниз, а их число будет ограничено 10.
- Предложение ORDER BY позволяет классифицировать детали по датам с максимальным числом. А параметр DESC указывает, что порядок инвертируется, поэтому из последней статьи, а не из первой.
ВЫБРАТЬ... С... ORDER BY post_modified DESC - Максимальное количество элементов задается предложением 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-плеер может использоваться для отображения канала, созданного на веб-странице.
Загрузить исходный код
Учебник RSS SQL и Wordpress, отображение даты
Гейлоты
$rss = '<?xml version="1.0" encoding="UTF-8" ?>'."\n"[; Ошибка при кодировке заголовков записей. - Во-вторых, это часы, которые остаются в 2:00, и это с любым временем входа. Если у тебя есть идеи или нужна дополнительная информация.:) Заранее спасибо! ^ ^
веб-мастер
Гейлоты
веб-мастер
$rss .= "<pubDate>$date"." GMT</pubDate>\n";Скрипт работает под всеми браузерами нормально.
Гейлоты