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

Форум PHP

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

 

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

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

тема: Свой RSS ! RSS на свём сайте
 
 автор: Panker   (20.09.2006 в 13:24)   письмо автору
 
 

Помогите разобраться!
Сделал я новости и комментарии, надо делать RSS.
У меня всё записывается в мускул!
Мне бы хотелось сделать так!
Что бы в RSS передавалась бы
1 Заголовок новости, у меня это обозначается переменной $title
2 Мини новости $mini_news
3 дата создания $data
Как мне это осуществить?
Читал что много версий этого RSS и хз запутался, может что то не так сделаю и так далее!
Пожалуйста объясните, это мне в файл как то писать надо или что?
Помогите, вот только ссылок не давайте, большую стать на форуме про RSS прочитал, про заголовки и так далее но не очень понял, а как это транслироваться будет или как это в общем происходит?

   
 
 автор: cheops   (20.09.2006 в 13:27)   письмо автору
 
   для: Panker   (20.09.2006 в 13:24)
 

На версии не обращайте внимания, любой RSS-клиент поддерживает все версии, просто возьмите наш RSS-файл и сделайте по аналогии.

   
 
 автор: Panker   (20.09.2006 в 14:06)   письмо автору
 
   для: cheops   (20.09.2006 в 13:27)
 

Тоесть мне просто надо создать файл rss.php допустим

и в него писать типа так

<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0" xmlns="http://backend.userland.com/rss2" xmlns:yandex="http://news.yandex.ru">
<channel>
<title>НАЗВАНИЕ НОВОСТИ $TITLE</title>
<link>$ADRES/</link>
<description>$MINI_NEWS</description>
и потмо с новой строки опять писать
<title>НАЗВАНИЕ НОВОСТИ $TITLE</title>
<link>$ADRES/</link>
<description>$MINI_NEWS</description>
и потмо опять
<title>НАЗВАНИЕ НОВОСТИ $TITLE</title>
<link>$ADRES/</link>
<description>$MINI_NEWS</description>

Так ?
просто фал и простов него писать?

и вот ещё, зачем вот это xmlns:yandex="http://news.yandex.ru"? причём тут яндекс :))))

   
 
 автор: Panker   (20.09.2006 в 15:32)   письмо автору
 
   для: Panker   (20.09.2006 в 14:06)
 

вот посомтрел статью как у ПХПББ сделана РСС но тоже не очень понятно :(

вот я написал так


<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0" xmlns="http://backend.userland.com/rss2" xmlns:yandex="http://news.yandex.ru">
    <channel>
        <title>Форум PHP портала SoftTime</title>
        <link>http://www.softtime.ru/forum/</link>
        <description>Форум PHP портала SoftTime поддерживается авторами нескольких книг по PHP</description>    <item>
            <title>Статистика php&amp;mysql для чайников</title>
            <link>http://softtime.ru/forum/readrss.php?id=24844_1</link>
            <description>Поиском искал, не нашел не чего!

Вопрос то в принципе у меня не большой, не прошу сделать всё :)

Нужно...</description> 
            <category>PHP</category>
            <pubDate>Wed, 20 Sep 2006 15:32:32 +0400</pubDate>
            <author>Panker</author>
        </item>

да, захожу на этот файл через оперу мне пишут ошибку
Parse error: parse error, unexpected T_STRING in y:\home\kmk\www\xml.php on line 1

   
 
 автор: cheops   (20.09.2006 в 20:57)   письмо автору
 
   для: Panker   (20.09.2006 в 15:32)
 

Если вы пишите PHP-файл, то эту строку необходимо выводить при помощи конструкции echo.

   
 
 автор: indexer   (21.09.2006 в 02:34)   письмо автору
 
   для: Panker   (20.09.2006 в 15:32)
 

Вот такая функция файл function_rss.php


<?php
//Подключение к базе и получение идентификатора соединения $conn//сложностей нет
 
$rss=true;//:-)


function build_rss($conn$num){
$sql mysql_query("SELECT * FROM `news` ORDER BY `date` DESC LIMIT $num");


$data=<<<HEADER_RSS
<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0">
    <channel>
        <generator>AGT_gen</generator>
        <title>Название ленты</title>
        <link>http://ссылка на сайт </link>
        <description>Описание.</description>
        <language>ru</language>
        <managingEditor>мыло менеджера</managingEditor>
        <copyright>COPY</copyright>
HEADER_RSS;

while(
$res=mysql_fetch_array($sql)){

//перевод из ГГГГ-ММ-ДД в такую хрень Mon, 18 Sep 2006 02:18:26 +0400 ну не использовал я timestamp, 
$time =$res[2];
list( 
$y$m$d) = explode("-"$time );
$times mktime(000$m$d$y);
$time=date("D, d M Y H:i:s +0400",$times);
//расстановка

$data.=<<<CONTENT

    <item>
        <title>
$res[3]</title>
        <pubDate>
$time</pubDate>
        <link>http://ссылка</link>
        <description><![CDATA[
$res[4] ]]></description>
    </item>
CONTENT;
}

$data=$data.<<<FOOTER_RSS

    </channel>
</rss>
FOOTER_RSS;

return 
$data;
}
?>



Обратите внимание на точки в $data это конкатенация строк
и естесно вывод всего этого файл rss.php


<?php
header
('Content-type: application/xml');//сказать что работаем с xml

include_once('function_rss.php')

   
$num=10;//количество новостей

     
echo build_rss($rss,$num);
?>

   
 
 автор: indexer   (21.09.2006 в 02:50)   письмо автору
 
   для: indexer   (21.09.2006 в 02:34)
 

HEADER_RSS и FOOTER_RSS загнал в одну функцию потому как мне так удобнее, но можно и разделить и прописывать теги отдельно например с конфиг файла.

дата должна быть имеено в таком формате
Mon, 18 Sep 2006 02:18:26 +0400
иначе будут глюки. используйте timestamp в базе легче перевести во что угодно

у меня это все пишется в файл rss.xml Кроном в 12 часов ночи поэтому мне время не важно 00:00:00

   
 
 автор: Panker   (21.09.2006 в 10:55)   письмо автору
 
   для: indexer   (21.09.2006 в 02:50)
 


    
Вот такая функция файл function_rss.php


тоисть в этом файле сделать шаблон вывода да?
и все значения доставать из базы да?

а потом в друго файле просто приинклудить файл и обозначить сколько новостеймаксимум ?

   
 
 автор: Panker   (21.09.2006 в 14:50)   письмо автору
 
   для: Panker   (21.09.2006 в 10:55)
 

вот такая ошибка Parse error: parse error, unexpected T_VARIABLE in y:\home\kmk\www\rss.php on line 6
на строку
$num=10;//количество новостей

сделал вот так


<?php 
include "config.php";
//Подключение к базе и получение идентификатора соединения $conn//сложностей нет 
 
$rss=true;//:-) 


function build_rss($conn$num){ 
$sql mysql_query("SELECT * FROM `news` ORDER BY `id` DESC LIMIT $num"); 


$data=<<<HEADER_RSS 
<?xml version="1.0" encoding="windows-1251"?> 
<rss version="2.0"> 
    <channel> 
        <generator>AGT_gen</generator> 
        <title>Название ленты</title> 
        <link>http://ссылка на сайт </link> 
        <description>Описание.</description> 
        <language>ru</language> 
        <managingEditor>мыло менеджера</managingEditor> 
        <copyright>COPY</copyright> 
HEADER_RSS; 

while($res=mysql_fetch_array($sql)){ 

//перевод из ГГГГ-ММ-ДД в такую хрень Mon, 18 Sep 2006 02:18:26 +0400 ну не использовал я timestamp,  
$time =$res[2]; 
list( $y, $m, $d) = explode("-", $time ); 
$times = mktime(0, 0, 0, $m, $d, $y); 
$time=date("D, d M Y H:i:s +0400",$times); 
//расстановка 

$data.=<<<CONTENT 

    <item> 
        <title>$res[3]</title> 
        <pubDate>$time</pubDate> 
        <link>http://ссылка</link> 
        <description><![CDATA[$res[4] ]]></description> 
    </item> 
CONTENT; 


$data=$data.<<<FOOTER_RSS 

    </channel> 
</rss> 
FOOTER_RSS; 

return $data; 

?>


второй файл

сам RSS.php
<?php
header('Content-type: application/xml');//сказать что работаем с xml

include_once('function_rss.php')

$num=10;//количество новостей

echo build_rss($rss,$num);
?>


а так и джолжно быть что в файле функции RSS расцветка на верху номральная а потом уже просто черный шрифт не какой расцветки :(

   
 
 автор: cheops   (21.09.2006 в 19:00)   письмо автору
 
   для: Panker   (21.09.2006 в 14:50)
 

Отсутсвует точка с запятой в файле rss.php после конструкции
<?php
include_once('function_rss.php')
?>

   
 
 автор: Panker   (21.09.2006 в 22:33)   письмо автору
 
   для: cheops   (21.09.2006 в 19:00)
 


Ошибка!
Ошибка анализа XML

Ошибка анализа XML: синтаксическая ошибка (Строка: 2, Символ: 0)

Повторный анализ документа как HTML
Ошибка:unexpected start-tag (root element already specified)
Спецификация:http://www.w3.org/TR/REC-xml/
  1: <br />
  2: <b>Parse error</b>:  parse error, unexpected T_SL in <b>y:\home\kmk\www\function_rss.php</b> on line <b>11</b><br />


11 строкуу ошибка =(
сюда - <?xml version="1.0" encoding="windows-1251"?>

=( помогите разобратся плиз очень хочу RSS =)

   
 
 автор: indexer   (21.09.2006 в 23:35)   письмо автору
 
   для: Panker   (21.09.2006 в 22:33)
 

Снимите функцию и запишите так запустите и смотрите что выведет
то что текст без окраски не должно быть

<?php
//все то же подключение к базе 
$num=1
$sql mysql_query("SELECT * FROM `news` ORDER BY `date` DESC LIMIT $num");  


$data=<<<HEADER_RSS
<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0">
    <channel>
        <generator>AGT_gen</generator>
        <title>Название</title>
        <link> ссылка</link>
        <description>описание</description>
        <language>ru</language>
        <managingEditor>мыло</managingEditor>
        <copyright>polmira.ru</copyright>
HEADER_RSS;
  

while(
$res=mysql_fetch_array($sql)){  

/*
//Временно отключаем 
//перевод из ГГГГ-ММ-ДД в такую хрень Mon, 18 Sep 2006 02:18:26 +0400 ну не использовал я timestamp,   
$time =$res[2];  
list( $y, $m, $d) = explode("-", $time );  
$times = mktime(0, 0, 0, $m, $d, $y);  
$time=date("D, d M Y H:i:s +0400",$times);  
//расстановка  
*/ 
$data.=<<<CONTENT

    <item>
        <title>
$res[3]</title>
        <pubDate>
$res[2]</pubDate>
        <link>http://www.polmira.ru</link>
        <description><![CDATA[
$res[4] ]]></description>
    </item>
CONTENT;
}  


$data=$data.<<<FOOTER_RSS

    </channel>
</rss>
FOOTER_RSS;

echo 
$data;// сначало запустить это  


/*
а это если непонятки будут 
echo $data."<br>"; 
echo $res[2]."<br>"; 
echo $res[4]."<br>"; 
*/
?>

что сие выводит?
и привидите код который выводит$data

может просто поля считываются не так как у меня естественно будет ошибка.
можно вместо mysql_fetch_array
использовать mysql_fetch_row
тогда будет не $res[1], $res[2],$res[3]
а $res[имя поля в базе]

   
 
 автор: indexer   (21.09.2006 в 23:46)   письмо автору
 
   для: indexer   (21.09.2006 в 23:35)
 

Форум код как то ломает, или перепишите вручную или вот файл

   
 
 автор: Panker   (22.09.2006 в 10:52)   письмо автору
 
   для: indexer   (21.09.2006 в 23:46)
 

вот я подписался на свои новости но ошибку всё равно выдаёт на строку номер 8
Fatal error: Call to undefined function: build_rss() in y:\home\kmk\www\rss.php on line 8

строка номер 8 это - <?xml version="1.0" encoding="windows-1251"?>

а если бодробней то вот, я захожу через оперу и мне САМА опера говорит вот что

Ошибка!
Ошибка анализа XML

Ошибка анализа XML: синтаксическая ошибка (Строка: 18, Символ: 6)


Повторный анализ документа как HTML
Ошибка:XML declaration not at beginning of document
Спецификация:http://www.w3.org/TR/REC-xml/
 15:         <description><![CDATA[55 ]]></description>
 16:     </item>
 17:     </channel>
 18: </rss><?xml version="1.0" encoding="windows-1251"?>
 19: <rss version="2.0">
 20:     <channel>
 21:         <generator>AGT_gen</generator>


то что выделено жирным опера выделяет красным!

Добавлено через 5 минут

Вот ещё кстати!
раньше же у меян в rrs.php
было

<?php 
header
('Content-type: application/xml');//сказать что работаем с xml 

include_once('function_rss.php');

[
b]$num=10;//количество новостей[/b]

[b]     echo build_rss($rss,$num); [/b]
     
     echo 
"$data";
?>


я удалил то что выыделенно жирным так как это уже в функциональном файле есть!

И выдаётся ошибка на эту строку - <?xml version="1.0" encoding="windows-1251"?>

НО если нажать пропустить ошибку можно зайти и не каких ошщибок не будет!
Но это всё равно смущает и меня и ползователе, как это сиправить?

ещё кстати
если я удаляю строку <?xml version="1.0" encoding="windows-1251"?> то подсветка становится нормальная в редакторе, и работает всё но ошибка выдаётся на другую строку и кодировка проподает!
если удалить <?xml version="1.0" encoding="windows-1251"?>
то ошибка идёт на </rss><rss version="2.0">
я думаю потому что переноса строки нет между концом и началом ((

   
 
 автор: Panker   (22.09.2006 в 12:01)   письмо автору
 
   для: Panker   (22.09.2006 в 10:52)
 

и вот ещё, не оброщая вниманяи на ошибку настроить пытался чт обы данные нужные вылезали, но видимо нельзя в адресе писать символ & а у меян везде в адресе они, то мне делать? мне ссылку на новости не поставить (( вот ещё с этой проблем помогите :( а так вроде всё настроил только ошибка одна что выше указал и вот с этим символом

http://softtime.ru/forum/read.php?id_forum=1&id_theme=24967&page=1

   
Rambler's Top100
вверх

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