File size: 3.82Kb
<?php
class rss
{
const count = 10;
//заголовок канала
const title = 'RSS на Coder-Lib.Ru';
//адрес сайта
const url = 'http://coder-lib.ru';
//описание канала
const desc = 'Новости сайта Coder-Lib.Ru';
//строим конструктор
function __construct($host,$user,$password,$db_name)
{
$this->header();
if (!$this->connect_db($host,$user,$password,$db_name)) $this->error_connect_db();
else $this->body();
}
//соединяемся с базой
function connect_db($host,$user,$password,$db_name)
{
$r=@mysql_connect($host,$user,$password);
if (!$r) return false;
mysql_query ('SET NAMES "UTF8"',$r);
mysql_query ('SET collation_connection="utf8_general_ci"',$r);
mysql_query ('SET collation_server="utf8_general_ci"',$r);
mysql_query ('SET character_set_client="utf8"',$r);
mysql_query ('SET character_set_connection="utf8"',$r);
mysql_query ('SET character_set_results="utf8"',$r);
mysql_query ('SET character_set_server="utf8"',$r);
if (!mysql_select_db($db_name,$r)) return false;
return true;
}
//шапка канала
function header()
{
header('Content-type: application/xml; charset=utf-8');
echo '<?xml version="1.0"?>
<rss version="2.0">
<channel>
<title>'.$this->win2utf(self::title).'</title>
<link>'.self::url.'</link>
<description>'.$this->win2utf(self::desc).'</description>
<language>ru</language>';
}
//тело канала
function body()
{
$q=mysql_query ('SELECT * FROM `news` ORDER BY `id` DESC LIMIT '.self::count);
if ($q)
{
if (mysql_num_rows($q) == 0) $this->news_not_found();
else
while ($rows=mysql_fetch_array($q))
{
echo '<item>
<title>'.$rows['tema'].'</title>
<link>'.self::url.'</link>
<description>'.$rows['news'].'</description>
<pubDate>'.$rows['date'].' GMT</pubDate>
<guid>'.self::url.'/news/'.$rows['id'].'/</guid>
</item>
';
}
mysql_free_result($q);
}
}
//при соединении с базой возникли ошибки
function error_connect_db()
{
echo '<item>
<title>'.$this->win2utf('Временные неполадки').'</title>
<link>'.self::url.'</link>
<description>'.$this->win2utf('Извините, на сайте возникли технические неполадки!').'</description>
<pubDate>'.date ('D, d M Y H:i:s').' GMT</pubDate>
<guid>http://coder-lib.ru/</guid>
</item>';
}
//новостей не наёдено
function news_not_found()
{
echo '<item>
<title>'.$this->win2utf('Новостей не найдено').'</title>
<link>'.self::url.'</link>
<description>'.$this->win2utf('Новостей не найдено!!!').'</description>
<pubDate>'.date ('D, d M Y H:i:s').' GMT</pubDate>
<guid>http://coder-lib.ru/</guid>
</item>';
}
//перекодирование из windows-1251 в utf-8
function win2utf($msg)
{
return iconv('windows-1251','utf-8',$msg);
}
//объявляем деструтор
function __destruct()
{
echo '</channel></rss>';
mysql_close();
}
}
require_once('lib/inc/db.php');
$rss= new rss('localhost',$user,$pass,$db);
?>