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

Форум PHP

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

 

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

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

тема: как сделать rss
 
 автор: TavRoX   (09.09.2010 в 20:54)   письмо автору
 
 

как сделать rss под свй сайт
что нужно?
есть бд с табилцей где данные к каждой заметке

  Ответить  
 
 автор: ~AquaZ~   (09.09.2010 в 21:47)   письмо автору
 
   для: TavRoX   (09.09.2010 в 20:54)
 

Так с ходу, думаю, не объяснят.
1) Посмотри исходный код новостей, покопайся.
2) Если мне память не сильно изменяет, это хорошо описано в этой книге http://www.softtime.biz/dataimg_books/php5_practica_second.gif

  Ответить  
 
 автор: TavRoX   (09.09.2010 в 21:49)   письмо автору
 
   для: ~AquaZ~   (09.09.2010 в 21:47)
 

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

  Ответить  
 
 автор: TavRoX   (09.09.2010 в 21:49)   письмо автору
 
   для: TavRoX   (09.09.2010 в 21:49)
 

может надо типа создать файл rss.xml
а там типа вывод всех новостей сделать или как

  Ответить  
 
 автор: nikita2206   (09.09.2010 в 21:54)   письмо автору
 
   для: TavRoX   (09.09.2010 в 21:49)
 

Типа создай файл rss.php и выводи данные в соответствие с правилами форматирования рсс
http://ru.wikipedia.org/wiki/Rss

  Ответить  
 
 автор: TavRoX   (09.09.2010 в 22:22)   письмо автору
 
   для: nikita2206   (09.09.2010 в 21:54)
 

спасибо буду пробовать

  Ответить  
 
 автор: TavRoX   (27.09.2010 в 00:38)   письмо автору
 
   для: TavRoX   (09.09.2010 в 22:22)
 

вот сделал рсс
но чет не пашеть
открывается страничка появляется типа подписатся а снизу нечего
только линия которая типа в шаблоне
<rss version="2.0">
  <channel>
    <title>Новости Ужгорода</title>
    <link>ссылка/</link>
    <description>Общественно-информационный портал города Ужгорода</description>
    <language>ru</language>

    <docs>ссылка/rss.php</docs>
    <generator>Сайт Ужгорода</generator>
    <managingEditor>мейл</managingEditor>
    <webMaster>мейл</webMaster>
<?
include ("blocks/bd.php");
$vivod='5';
            if(
$_GET['page']==0){$_GET['page']=1;}
$page=$_GET['page'];
                    
$j $_GET['page']*$vivod-$vivod;

                        
                        
$query11 "SELECT * from data";
$res11 mysql_query($query11) or die(mysql_error());
            
$number11 mysql_affected_rows();


            
$x ceil($number11 $vivod);




$query="SELECT id, cat, title, description, date, text, view FROM data ORDER by id DESC limit ".$j.",".$vivod;

$res=mysql_query($query);

while (
$row=mysql_fetch_array($res)) {
    
$kat $row["cat"];
    
$result2 mysql_query("SELECT id, title FROM categories WHERE id='$kat'",$db);
$row2 mysql_fetch_array($result2);
$text $row['text'];
$title $row['title'];
$date2 $row['date'];
$monthes = array('''ЯНВАРЯ''ФЕВРАЛЯ''МАРТА','АПРЕЛЯ','МАЯ','ИЮНЯ','ИЮЛЯ','АВГУСТА','СЕНТЯБРЯ','ОКТЯБРЯ','НОЯБРЯ','ДЕКАБРЯ');
list(
$year$month$day) = explode('-'"$date2");
$month_name $monthes[(int) $month];

?>
<item>
      <title><? echo $row['title']; ?></title>
      <link>ссылка/view_post.php?id=<? echo $row['id']; ?></link>
      <description><? echo substr($text,0,100)."..."?></description>
      <pubDate><? echo "$day"?><? echo "$month_name"?><? echo "$year"?></pubDate>
      <guid>ссылка/view_post.php?id=<? echo $row['id']; ?></guid>
    </item>
                        
            <img src="images/line-1.jpg" style="margin-top:10px "><br>
 <?
 
}

 
 

echo 
"<br/><div   style='float:left; width:350px; padiing-bottom: 5px;'>";
            for(
$i=1;$i<$x+1;$i++)
    {
if (
$i==$page) {
    echo 
"<a style='color:orange; bottom:0;' >".$i."</a> ";
} else {
    echo 
"<a style='color:#809ad6; bottom:0;' href = \"index.php?page=".$i."\">".$i."</a> ";
        }}

echo 
"</div> <br>"?>
  </channel>
</rss>

  Ответить  
 
 автор: Лена   (27.09.2010 в 11:06)   письмо автору
 
   для: TavRoX   (27.09.2010 в 00:38)
 

Забыли в начале - <?xml version="1.0" encoding="windows-1251"?> Кодировку свою укажите. RSS - частный случай xml.

согласно RFC-822 все даты в RSS-ленте должны указываться в таком формате:
Mon, 17 Nov 2008 20:06:55 +0300

Я обычно содержимое description беру в CDATA, чтобы если в строке HTML-теги попадутся, они
отображались правильно. Например:
<description><![CDATA[$message]]></description>

Согласно формату xml, все теги должны закрываться. У вас <img src="images/line-1.jpg" style="margin-top:10px "> незакрытый. <br> - вообще выкинуть. И по-моему, для image в RSS есть свой элемент.

И я бы в начале скрипта послала заголовок, что перед нами - формат xml:
header("Content-type: application/xml");

  Ответить  
 
 автор: TavRoX   (27.09.2010 в 16:10)   письмо автору
 
   для: Лена   (27.09.2010 в 11:06)
 

а если у меня нету в дате времени?

  Ответить  
 
 автор: TavRoX   (27.09.2010 в 16:15)   письмо автору
 
   для: TavRoX   (27.09.2010 в 16:10)
 

вставил вверху такое вот
<? xml version="1.0" encoding="windows-1251" ?>

выбивает ошибку
Parse error: syntax error, unexpected T_STRING

  Ответить  
 
 автор: Лена   (27.09.2010 в 16:26)   письмо автору
 
   для: TavRoX   (27.09.2010 в 16:15)
 

Всю строку ошибки приведите, пожалуйста.
Перед тегом <? xml пробелы есть?

Кодировка файла какая у вас?
Если файл в utf, то надо прописывать <?xml version="1.0" encoding="utf-8" ?>

  Ответить  
 
 автор: TavRoX   (27.09.2010 в 16:32)   письмо автору
 
   для: Лена   (27.09.2010 в 16:26)
 

и с пробелами и без ошибка таже
кодировка ета
файл формата php

rss.php

  Ответить  
 
 автор: Лена   (27.09.2010 в 16:38)   письмо автору
 
   для: TavRoX   (27.09.2010 в 16:32)
 

Еще раз повторяю свою просьбу от (27.09.2010 в 16:26)
Всю строку ошибки приведите здесь(т.е. надо привести все, что идет после Parse error: syntax error, unexpected T_STRING )

  Ответить  
 
 автор: TavRoX   (27.09.2010 в 16:39)   письмо автору
 
   для: Лена   (27.09.2010 в 16:38)
 

Parse error: syntax error, unexpected T_STRING in /home/.../...../.../rss.php on line 1

  Ответить  
 
 автор: Лена   (27.09.2010 в 16:51)   письмо автору
 
   для: TavRoX   (27.09.2010 в 16:39)
 

Сорри, у вас там в начале html идет...
Тогда так: <xml version="1.0" encoding="windows-1251">

  Ответить  
 
 автор: Лена   (27.09.2010 в 16:32)   письмо автору
 
   для: TavRoX   (27.09.2010 в 16:10)
 

Есть стандартные требования к формату xml.
В случае с датой тоже есть стандарт, о котором я вам рассказала.

>а если у меня нету в дате времени?

xml все равно, есть ли у вас время в дате или нет. Он хочет, чтобы ему дали дату в нужном формате. Другой даты он просто не понимает.
Выход: или добавить время, или убрать тег <pubDate>. Прежде, чем убирать, сделайте у себя print date("r"); - и посмотрите, что выводит. А после сравните со стандартом даты xml.

  Ответить  
 
 автор: TavRoX   (27.09.2010 в 16:58)   письмо автору
 
   для: Лена   (27.09.2010 в 16:32)
 

теперь пашет но выводи тпонлый бред(

http://....com/ Общественно-информационный портал города Ужгорода ru http://....com/rss.php Сайт Ужгорода мейл мой мейл мой http://uzhgorod-ua.com/view_post.php?id=262
 

http://....com/view_post.php?id=261 http://....com/view_post.php?id=260

http://....com/view_post.php?id=259

 

http://....com/view_post.php?id=258 


ну и странички снизу навигация

  Ответить  
 
 автор: Лена   (27.09.2010 в 17:03)   письмо автору
 
   для: TavRoX   (27.09.2010 в 16:58)
 

Из базы не выводится информация.
Посмотрите, проходит ли запрос на выборку, поменяйте эти строки:
$query="SELECT id, cat, title, description, date, text, view FROM data ORDER by id DESC limit ".$j.",".$vivod;

$res=mysql_query($query);
while ($row=mysql_fetch_assoc($res)) {
print "<pre>";
print_r($row);
print "</pre>";

Результат - сюда.
И попробуйте напрячь мозги и объяснить, почему результат такой.

  Ответить  
 
 автор: TavRoX   (27.09.2010 в 17:10)   письмо автору
 
   для: Лена   (27.09.2010 в 17:03)
 

выводит то что Леночка увидела правильно)

  Ответить  
 
 автор: heed   (27.09.2010 в 17:36)   письмо автору
 
   для: TavRoX   (27.09.2010 в 17:10)
 

сдаётся мне у Вас там с html-тегами текст, потомучто после первого ряда одни [view] видите в браузере.
обрабатывайте текст htmlspecialchars()

Каким браузером пользуетесь ? он вообще умеет отображать xml ?
Exolorer должен показывать его как исходный код

или в адресной строке появляется значёк rss, если в коде страниц <link href="......" rel="alternate" type="application/rss+xml"/>


><?xml version="1.0" encoding="windows-1251" ?>
выбивает ошибку
Parse error: syntax error, unexpected T_STRING

чтобы php не интерпретировал <?xml как открывающий тег пишите
<?php echo '<?xml version="1.0" encoding="windows-1251" ?>'; ?>

  Ответить  
 
 автор: TavRoX   (27.09.2010 в 17:46)   письмо автору
 
   для: heed   (27.09.2010 в 17:36)
 

текст с хтмл тегами ето да
браузеры у меня усе включены))

  Ответить  
 
 автор: Лена   (27.09.2010 в 17:22)   письмо автору
 
   для: Лена   (27.09.2010 в 17:03)
 

У вас даже лучше, чем я думала :)
Очистите предыдущий пост, чтобы не было горизонтального скроллинга, у меня страница не помещается по ширине, читать сложно.
Значит, из базы у вас все выводится.
Вот этот блок:
<title><? echo $row['title']; ?></title>
<link>ссылка/view_post.php?id=<? echo $row['id']; ?></link>
<description><? echo substr($text,0,100)."..."; ?></description>
<pubDate><? echo "$day"; ?>, <? echo "$month_name"; ?>, <? echo "$year"; ?></pubDate>
<guid>ссылка/view_post.php?id=<? echo $row['id']; ?></guid>

Переменные не надо брать в кавычки. Сами внимательно исправьте, например:
строку echo "$month_name";
на строку echo $month_name;

По дате отпишусь уже вечером, сейчас своя работа есть.

  Ответить  
 
 автор: TavRoX   (27.09.2010 в 17:27)   письмо автору
 
   для: Лена   (27.09.2010 в 17:22)
 

убрал кавычки всреавно не работает(
выводит аткже как и было
дату вообще убрал

  Ответить  
 
 автор: Лена   (27.09.2010 в 21:32)   письмо автору
 
   для: TavRoX   (27.09.2010 в 17:27)
 

>дату вообще убрал
Зря убрали, надо было в мануал хотя бы заглянуть, что ли... Я ж вам наводку дала.
В вашем случае это будет:
date("r",strtotime($row['date']));

  Ответить  
 
 автор: TavRoX   (27.09.2010 в 21:36)   письмо автору
 
   для: Лена   (27.09.2010 в 21:32)
 

та дата то такое главное чтобы все работало

  Ответить  
 
 автор: Лена   (27.09.2010 в 21:40)   письмо автору
 
   для: TavRoX   (27.09.2010 в 21:36)
 

Т.е. у вас до сих пор не работает?

  Ответить  
 
 автор: TavRoX   (27.09.2010 в 21:45)   письмо автору
 
   для: Лена   (27.09.2010 в 21:40)
 

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

  Ответить  
 
 автор: Лена   (27.09.2010 в 21:49)   письмо автору
 
   для: TavRoX   (27.09.2010 в 21:45)
 

>ну если добавить ту штукенцию что вы скинули то работает если убрат ьто не работает
детский сад вторая группа. Пошла попрошу у Trianona самые жесткие пули.

Что у вас там есть в коде на самом деле, я не знаю - я ж не могу проконтролировать, что вы поменяли, а что нет.
Дайте дамп базы и дайте ваш код - ИСПРАВЛЕННЫЙ. Посмотрю.

  Ответить  
 
 автор: TavRoX   (27.09.2010 в 22:00)   письмо автору
186 Кб
 
   для: Лена   (27.09.2010 в 21:49)
 

кусок дампа таблицы

  Ответить  
 
 автор: TavRoX   (27.09.2010 в 22:02)   письмо автору
 
   для: TavRoX   (27.09.2010 в 22:00)
 

вот так типа пашет
<xml version="1.0" encoding="windows-1251">
<rss version="2.0">
  <channel>
    <title>Новости Ужгорода</title>
    <link>http://сайт.com/</link>
    <description>Общественно-информационный портал города Ужгорода</description>
    <language>ru</language>

    <docs>http://сайт.com/rss.php</docs>
    <generator>Сайт Ужгорода</generator>
    <managingEditor>ser@i.ua</managingEditor>
    <webMaster>ser@i.ua</webMaster>
<?
include ("blocks/bd.php");
$vivod='5';
            if(
$_GET['page']==0){$_GET['page']=1;}
$page=$_GET['page'];
                    
$j $_GET['page']*$vivod-$vivod;

                        
                        
$query11 "SELECT * from data";
$res11 mysql_query($query11) or die(mysql_error());
            
$number11 mysql_affected_rows();


            
$x ceil($number11 $vivod);




$query="SELECT id, cat, title, description, date, text, view FROM data ORDER by id DESC limit ".$j.",".$vivod;

$res=mysql_query($query);

while (
$row=mysql_fetch_assoc($res)) {
print 
"<pre>";
print_r($row);
print 
"</pre>";
$text $row['text'];
$title $row['title'];

?>
<item>
      <title><? echo $row['title']; ?></title>
      <link>http://сайт.com/view_post.php?id=<? echo $row['id']; ?></link>
      <description><? echo substr($text,0,100).'...'?></description>
      <guid>http://сайт.com/view_post.php?id=<? echo $row['id']; ?></guid>
    </item>
                        

 <?
 
}

 
 

echo 
"<br/><div   style='float:left; width:350px; padiing-bottom: 5px;'>";
            for(
$i=1;$i<$x+1;$i++)
    {
if (
$i==$page) {
    echo 
"<a style='color:orange; bottom:0;' >".$i."</a> ";
} else {
    echo 
"<a style='color:#809ad6; bottom:0;' href = \"rss.php?page=".$i."\">".$i."</a> ";
        }}

echo 
"</div> <br>"?>
  </channel>
</rss>



а вот так не пашет:
<xml version="1.0" encoding="windows-1251">
<rss version="2.0">
  <channel>
    <title>Новости Ужгорода</title>
    <link>http://сайт.com/</link>
    <description>Общественно-информационный портал города Ужгорода</description>
    <language>ru</language>

    <docs>http://сайт.com/rss.php</docs>
    <generator>Сайт Ужгорода</generator>
    <managingEditor>ser@i.ua</managingEditor>
    <webMaster>ser@i.ua</webMaster>
<?
include ("blocks/bd.php");
$vivod='5';
            if(
$_GET['page']==0){$_GET['page']=1;}
$page=$_GET['page'];
                    
$j $_GET['page']*$vivod-$vivod;

                        
                        
$query11 "SELECT * from data";
$res11 mysql_query($query11) or die(mysql_error());
            
$number11 mysql_affected_rows();


            
$x ceil($number11 $vivod);




$query="SELECT id, cat, title, description, date, text, view FROM data ORDER by id DESC limit ".$j.",".$vivod;

$res=mysql_query($query);

while (
$row=mysql_fetch_assoc($res)) {

$text $row['text'];
$title $row['title'];

?>
<item>
      <title><? echo $row['title']; ?></title>
      <link>http://сайт.com/view_post.php?id=<? echo $row['id']; ?></link>
      <description><? echo substr($text,0,100).'...'?></description>
      <guid>http://сайт.com/view_post.php?id=<? echo $row['id']; ?></guid>
    </item>
                        

 <?
 
}

 
 

echo 
"<br/><div   style='float:left; width:350px; padiing-bottom: 5px;'>";
            for(
$i=1;$i<$x+1;$i++)
    {
if (
$i==$page) {
    echo 
"<a style='color:orange; bottom:0;' >".$i."</a> ";
} else {
    echo 
"<a style='color:#809ad6; bottom:0;' href = \"rss.php?page=".$i."\">".$i."</a> ";
        }}

echo 
"</div> <br>"?>
  </channel>
</rss>

  Ответить  
 
 автор: Лена   (27.09.2010 в 22:50)   письмо автору
 
   для: TavRoX   (27.09.2010 в 22:02)
 


<?php
header
("Content-type: application/xml");
 
$hostName "";
  
$userName ="";
  
$password "";
  
$databaseName "";
  if
(!(
$link=@mysql_connect($hostName,$userName,$password))){
 
printf("B настоящий момент сервер базы данных не доступен, поэтому
корректное отображение страницы невозможно."
);
exit();
 }
  if
(!
mysql_select_db($databaseName$link)){
 
printf("B настоящий момент база данных не доступна, поэтому
корректное отображение страницы невозможно."
);
 exit();
 }
mysql_query ("SET NAMES utf8");

print 
'<?xml version="1.0" encoding="utf-8"?>';
?>
<rss version="2.0">
  <channel>
    <title>Новости Ужгорода</title>
    <link>http://сайт.com/</link>
    <description>Общественно-информационный портал города Ужгорода</description>
    <language>ru</language>

    <docs>http://сайт.com/rss.php</docs>
    <generator>Сайт Ужгорода</generator>
    <managingEditor>ser@i.ua</managingEditor>
    <webMaster>ser@i.ua</webMaster>
<?php
$query
="SELECT id, cat, title, description, date, text, view FROM data ORDER by id DESC";
$res=mysql_query($query);

while (
$row=mysql_fetch_assoc($res)) {
$text $row['text'];
$title $row['title'];

?>
<item>
      <title><?php echo htmlspecialchars($row['title']); ?></title>
      <link>http://сайт.com/view_post.php?id=<?php echo $row['id']; ?></link>
     <description><?php echo htmlspecialchars(substr($text,0,100)).'...'?></description>
     <pubDate><?php print date("r",strtotime($row['date']));?></pubDate>
      <guid>http://сайт.com/view_post.php?id=<?php echo $row['id']; ?></guid>
    </item>
<?php
 
}
?>
</channel>
</rss>



Подключение к базе сделайте свое.
Ни разу не видела rss-ленты с постраничной навигацией.
Обычно, если данных много, разбивают на несколько файлов. Могу и ошибаться :)

PS. Не позорьте Украину, садитесь читать мануал. :)

  Ответить  
 
 автор: TavRoX   (27.09.2010 в 23:06)   письмо автору
 
   для: Лена   (27.09.2010 в 22:50)
 

<?php 
$db 
mysql_connect ("localhost","логин","пароль");
mysql_select_db("база",$db);
mysql_query("SET NAMES 'cp1251'");
mysql_query("SET CHARACTER SET 'cp1251'");

?>

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

  Ответить  
 
 автор: Лена   (27.09.2010 в 23:19)   письмо автору
 
   для: TavRoX   (27.09.2010 в 23:06)
 

$db = mysql_connect ("localhost","логин","пароль");
mysql_select_db("база",$db);

Любой запрос к базе надо проверять, успешно он прошел или нет. У вас этого нет.

mysql_query("SET NAMES 'cp1251'"); - берет кодировку, которую указывает клиент
эквивалентно трем строкам:
SET character_set_client = ;
SET character_set_results = ;
SET character_set_connection = ;

mysql_query("SET CHARACTER SET 'cp1251'"); - берет кодировку соединения базы.
Либо то, либо то.

>а причем сдесь украина?
Новости Ужгорода. Подумала, что вы из Украины.

>етот сайт доделаю и буду пхп учить поновой
Лучше наоборот.

  Ответить  
 
 автор: TavRoX   (27.09.2010 в 23:22)   письмо автору
 
   для: Лена   (27.09.2010 в 23:19)
 

ну подкключение работает сайт то работает)
а те две строки я добавил для того чтобы кодировка не сбивалась потмоучт опосле переноса сайта на хостинг были проблемы

  Ответить  
 
 автор: TavRoX   (30.09.2010 в 22:19)   письмо автору
 
   для: TavRoX   (27.09.2010 в 23:22)
 

так что делать блин(

  Ответить  
Rambler's Top100
вверх

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