Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите с RSS
 
 автор: Владимир22   (02.11.2007 в 04:06)   письмо автору
 
 

Хочу сделать свой Rss-канал, т.е. из моей базы выводятся новости (заголовок, номер и дата) и потом чтоб в ленте можно было при нажатии на заголовок переходить на мой сайт для подробного ознакомления.
Сделал файл Rss.xml но не работает. Посмотрите, кто уже это проехал, что не так???

<?
header
("content-type: application/rss+xml");
echo 
"<?xml version=\"1.0\" encoding=\"windows-1251\"?> 
<rss version=\"2.0\"><channel>
<title>Новости сайта</title>
<link>http://site.ru</link>
<description>Свежие новости сайта</description>
<language>ru-ru</language>"
;
include(
"bd_config.php"); //конфигурация базы
$rez=mysql_query("select nomer, news, date from list_news ORDER BY `date` DESC LIMIT 10");
while (
$str=mysql_fetch_array($rez))
{
$nomer=$str['nomer'];$news=$str['news'];$date=$str['date'];
echo 
"<item>
<title>
$news</title>
<link>http://site.ru/news.htm?n=
$nomer</link>
<pubDate>
$date</pubDate>
<guid>http://site.ru/news.htm?n=
$nomer</guid>
</item>"
;
}
echo 
"</channel></rss>";
?>

   
 
 автор: zavragnov   (02.11.2007 в 10:48)   письмо автору
 
   для: Владимир22   (02.11.2007 в 04:06)
 

Проверил ваш скрипт, у меня все отлично работает, а в чем выражена не работа?

   
 
 автор: Владимир22   (02.11.2007 в 14:09)   письмо автору
 
   для: zavragnov   (02.11.2007 в 10:48)
 

Выдаёт: ОШИБКА ПРИ ОБРАБОТКЕ РЕСУРСА, строка 1....
А надо для xml-файлов что-то прописывать в .hracces
а то при просмотре кода (rss.xml), там отображается весь php-код
???

   
 
 автор: Unkind   (02.11.2007 в 14:24)   письмо автору
 
   для: Владимир22   (02.11.2007 в 14:09)
 

Расширение *.php должно быть, конечно.

   
 
 автор: pina   (02.11.2007 в 14:34)   письмо автору
 
   для: Владимир22   (02.11.2007 в 14:09)
 

.htaccess:


RemoveHandler .html .htm .php. .xml
AddType application/x-httpd-php .php .xml


Кажется так

   
 
 автор: Владимир22   (02.11.2007 в 17:11)   письмо автору
 
   для: pina   (02.11.2007 в 14:34)
 

Спасибо всем - помогло. И ищё вопрос по дате:
у меня новости из базы выводся в формате: 2007-11-02 15:26:08
Но видел на других лентах, там дата, типа такая: Fri, 02 Nov 2007 15:26:08 +0200
Кто уже в курсе, подскажите как перевести в моём случае для Rss по московскому времени???

   
 
 автор: Владимир22   (02.11.2007 в 18:30)   письмо автору
 
   для: Владимир22   (02.11.2007 в 17:11)
 

Люди! HELP! Как перевести дату, типа: 2007-11-02 17:11:07 в RFC 2822 для RSS-канала??? Нигде никто не знает :(

   
 
 автор: Unkind   (02.11.2007 в 20:14)   письмо автору
 
   для: Владимир22   (02.11.2007 в 18:30)
 

Открываем мануал MySQL с функциями для работы с датой и временем. Находим DATE_FORMAT().
Составляем формат (второй аргумент):
%a    Abbreviated weekday name (Sun..Sat)
%e    Day of the month, numeric (0..31)
%b    Abbreviated month name (Jan..Dec)
%Y    Year, numeric, four digits
%T    Time, 24-hour (hh:mm:ss)


Теперь запрос:
SELECT ..., DATE_FORMAT(`date`, '%a, %e %b %Y %T') as `dt` FROM `tbl`;


К полученной дате остается добавить различие с Гринвическим временем: date('O')

   
 
 автор: Владимир22   (02.11.2007 в 22:10)   письмо автору
 
   для: Unkind   (02.11.2007 в 20:14)
 


$rez=mysql_query("select nomer, news, date from list_news ORDER BY `date` DESC LIMIT 10"); 
while ($str=mysql_fetch_array($rez)) 

$date=$str['date']; // это дата в базе, например, такая: 2007-11-02 19:36:25
$date=strftime('%a, %e %b %Y %T+02:00',$date); // НЕ РАБОТАЕТ!
echo $date;// нужно вывести так: Fri, 02 Nov 2007 19:36:25 +0200
}


HELP! Замучался с разными вариантами - никак не хочет правильно переводиться.
Unkind или другие профи, помогите с конкретным решением!

   
 
 автор: sim5   (02.11.2007 в 22:19)   письмо автору
 
   для: Владимир22   (02.11.2007 в 22:10)
 

Ну если взять с базы дату, то брать ее в UNIX_TIMESTAMP, а потом:
date('r', $date)
Видимо так.

   
 
 автор: Владимир22   (02.11.2007 в 22:25)   письмо автору
 
   для: sim5   (02.11.2007 в 22:19)
 

Всё! Всем спасибо - всё успешно разрешилось! Да здравствует форум softtime.ru !

   
 
 автор: Владимир22   (03.11.2007 в 16:49)   письмо автору
 
   для: Владимир22   (02.11.2007 в 22:25)
 

Люди, помогите!
Ставлю дату в файле xml:
...................................
$date=$str['date']; это вынимается из базы, формат такой: 2007-11-02 19:36:25
$dat=strtotime($date);
$date=strftime('%a, %e %b %Y %T+0200',$dat); // перевод в формат для RSS
Получается вроде нормально, если смотреть сам файл Rss.xml
но при чтении из RSS-ридера (Freedreader 3.11) всё выводится на 3 часа больше.
И сколько бы не ставил (+0200, даже +100000) всё равно такая ерунда - на 3 часа больше и всё. Как исправить, кто в курсе??? Знатоки, отзовитесь!!!! HELP!!!!

И ещё: какую дату надо ставить в <lastBuildDate> - где брать эту дату? Это дата последней новости или что-то другое ?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования