Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Установка RSS-лент на сайт

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Как подключить
Mister
Отправлено: 09 Июня, 2007 - 12:03:52
Post Id



Посетитель


Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2007  
Откуда: Сухиничи Калуж.обл.


Помог: 0 раз(а)

[+]


Подскажите, как подключить rss-ленту на сайт и где её можно взять?


-----
..я не специалист, а только учусь
 
 Top
evgenijj
Отправлено: 09 Июня, 2007 - 14:00:02
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Mister пишет:
Подскажите, как подключить rss-ленту на сайт и где её можно взять?

PHP:
скопировать код в буфер обмена
  1.  
  2.  <?PHP
  3.  /**********************************************************
  4.   * Parse XML data into an array structure                 *
  5.   * Usage: array parse_rss ( string data )                 *
  6.   **********************************************************/
  7.  function parse_rss($reg_exp, $xml_data) {
  8.      preg_match_all($reg_exp, $xml_data, $temp);
  9.      return array(
  10.          'count'=>count($temp[0]),
  11.          'title'=>$temp[1],
  12.          'link'=>$temp[2],
  13.          'desc'=>$temp[3]
  14.      );
  15.  }
  16.  
  17.  /**********************************************************
  18.   * Parse Array data into an HTML structure                *
  19.   * Usage: string parse_rss ( array data )                 *
  20.   **********************************************************/
  21.  function output_rss($pattern, $rss_data) {
  22.      for($i=0; $i<$rss_data['count']; $i++) {
  23.          $temp .= sprintf($pattern,
  24.              $rss_data['link'][$i],
  25.              $rss_data['title'][$i],
  26.              $rss_data['desc'][$i]
  27.          );
  28.      }
  29.      return $temp;
  30.  }
  31.  
  32.  /**********************************************************
  33.   * Settings                                               *
  34.   **********************************************************/
  35.  $url = 'http://www.secnews.ru/russian/rss.php';
  36.  
  37.  $reg_exp  = '#<item>.*?<title>(.*?)</title>.*?';
  38.  $reg_exp .='<link>(.*?)</link>.*?<description>';
  39.  $reg_exp .='(.*?)</description>.*?</item>#si';
  40.  
  41.  $pattern = '<a href="%s">%s</a>< br>%s<hr>';
  42.  
  43.  /**********************************************************
  44.   * Main script                                            *
  45.   **********************************************************/
  46.  if ( $xml_data = file_get_contents($url) ) {
  47.      $rss_data = parse_rss($reg_exp, $xml_data);
  48.      echo output_rss($pattern, $rss_data);
  49.  }
  50.  /**********************************************************
  51.   * The END                                                *
  52.   **********************************************************/
  53.  ?>
  54.  

Для извлечения информации из RSS-ленты можно также использовать функции DOM XML и Simple XML
* расширение DOM XML для PHP4 http://www.php.su/functions/?cat=domxml
* встроенные функции DOM XML для PHP5 http://www.php.su/functions/?cat=dom
* Simple XML для PHP5 http://www.php.su/functions/?cat=simplexml
 
 Top
Mister
Отправлено: 09 Июня, 2007 - 14:52:52
Post Id



Посетитель


Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2007  
Откуда: Сухиничи Калуж.обл.


Помог: 0 раз(а)

[+]


Спасибо, я думал всё намного проще.


-----
..я не специалист, а только учусь
 
 Top
Mister
Отправлено: 21 Июня, 2007 - 11:12:56
Post Id



Посетитель


Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2007  
Откуда: Сухиничи Калуж.обл.


Помог: 0 раз(а)

[+]


Подскажите а как - нибудь ещё попроще можно ли rss подключить, допустим в простую html страницу без поддержки php?


-----
..я не специалист, а только учусь
 
 Top
evgenijj
Отправлено: 21 Июня, 2007 - 11:16:33
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Mister пишет:
Подскажите а как - нибудь ещё попроще можно ли rss подключить, допустим в простую html страницу без поддержки php?

"Простая" html-страничка верстается руками. Как ты запросишь файл с удаленного хоста? И как получишь из RSS (XML) нужную информацию?

Тот скрипт, что я приводил выше -- вполне рабочий.
http://www[dot]tinko[dot]biz/tmp/rss.php
Надо только эти данные положить в БД или в файл и выводить по необходимости.
 
 Top
Mister
Отправлено: 21 Июня, 2007 - 11:29:22
Post Id



Посетитель


Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2007  
Откуда: Сухиничи Калуж.обл.


Помог: 0 раз(а)

[+]


Приведённый сайт это и есть rss-лента? Т.е. он помещает все сообщения в массив, а потом выводит? а база данных для чего? Нельзя ли массив формировать динамически и выводить?
Т.е. теперь её нужно в сайт вставить, а сделать это можно только через приведённый скрипт, а нельзя ли её просто через фрэйм включить в состав html страницы?


-----
..я не специалист, а только учусь
 
 Top
evgenijj
Отправлено: 21 Июня, 2007 - 11:49:08
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Mister пишет:
а база данных для чего? Нельзя ли массив формировать динамически и выводить?

Потому что каждый раз запрашивать RSS-файл с удаленного хоста, парсить его, формировать html -- дело накладное (и по времени и по нагрузке). Если же ты поместишь этот скрипт в CRON то он будет запускаться раз или два в сутки. А скрипт, который будет выводить RSS-ленту (в формате html) будет просто брать готовый html из файла или из БД.
Mister пишет:

а нельзя ли её просто через фрэйм включить в состав html страницы?

RSS-лента -- это просто XML-файл. Зайди вот по этому адресу
http://www[dot]secnews[dot]ru/russian/rss.php
и посмотри как он выглядит. Ты же должен отдать браузеру HTML. Т.е. тебе эту RSS-ленту надо сформировать. А потом, хоть во фрейме, хоть без ...
 
 Top
Mister
Отправлено: 21 Июня, 2007 - 16:20:10
Post Id



Посетитель


Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2007  
Откуда: Сухиничи Калуж.обл.


Помог: 0 раз(а)

[+]


В целом смысл понятен, а это ещё нужно всё через cron запускать?


-----
..я не специалист, а только учусь
 
 Top
evgenijj
Отправлено: 21 Июня, 2007 - 16:51:27
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Mister пишет:
В целом смысл понятен, а это ещё нужно всё через cron запускать?

Можно конечно и самому, вручную ежедневно (или ежечасно) запускать скрипт, который читает rss-ленту на стороннем сайте и формирует html. Но удобнее использовать cron:
Цитата:

Cron - это планировщик задач в UNIX-подобных системах. Cron позволяет выполнять некоторые операции в определённое время или с некоторой периодичностью.
 
 Top
andreyphp
Отправлено: 19 Июня, 2008 - 14:51:36
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Июнь 2008  


Помог: 0 раз(а)




Помогите теперь, это все засунуть в базу данных ….
Вот, что я попробовал сделать вот только …..


CODE (text):
скопировать код в буфер обмена
  1. <?PHP  
  2.  /**********************************************************
  3.   * Parse XML data into an array structure                 *
  4.   * Usage: array parse_rss ( string data )                 *
  5.   **********************************************************/
  6.  define("TBRSS", "bd");
  7.  $user = "testuser";
  8.  $pass = "testuser777";
  9.  $db   = "testuser";
  10.  
  11.                  $connection= mysql_connect("localhost", $user, $pass)
  12.                  or die("Could not connect: ".mysql_error());
  13.                  
  14.                                  mysql_query("CREATE DATABASE $db");
  15.                                  
  16.                                  mysql_select_db($db, $connection)
  17.                    or die("Could not select database: ".mysql_error());
  18.  
  19.  
  20.  
  21.  function parse_rss($reg_exp, $xml_data) {
  22.      preg_match_all($reg_exp, $xml_data, $temp);
  23.      return array(
  24.          'count'=>count($temp[0]),
  25.          'title'=>$temp[1],
  26.          'link'=>$temp[2],
  27.          'desc'=>$temp[3],
  28.                  'pubDate'=>$temp[4]
  29.      );
  30.  }
  31.  
  32.   $query="INSERT INTO TBRSS(  title, link, descrip, pubdate) VALUES
  33.     ('va', 'ca','xa', 'awef')"
  34.         or die("не получилось: ".mysql_error());
  35.   $result=mysql_query($query);
  36.  
  37.  /**********************************************************
  38.   * Parse Array data into an HTML structure                *
  39.   * Usage: string parse_rss ( array data )                 *
  40.   **********************************************************/
  41.  function output_rss($pattern, $rss_data) {
  42.      for($i=0; $i<$rss_data['count']; $i++) {
  43.          
  44.          $query="INSERT INTO TBRSS(title,link,descrip,pubdate) VALUES
  45.     ('$rss_data [title][$i]' , '$rss_data [link][$i]',
  46.      '$rss_data [desc][$i]', '$rss_data[pubDate][$i]')" ;  
  47.                 $result=mysql_query($query)
  48.                 or die("Ошибка: ".mysql_error());        
  49.                 }
  50.                 };       
  51.        
  52.  
  53.  
  54.  /**********************************************************
  55.   * Settings                                               *
  56.   **********************************************************/
  57.  $url = 'http://forex.onlinebroker.ru/rss/rss.asp?id=2';
  58.  
  59.  $reg_exp  = '#<item>.*?<title>(.*?)</title>.*?';
  60.  $reg_exp .='<link>(.*?)</link>.*?<description>';
  61.  $reg_exp .='(.*?)</description>.*?<pubDate>(.*?)</pubDate>*?</item>#si';
  62.  
  63.  
  64.  $pattern = '%s<br>%s<br>%s<dr>%s';
  65.  
  66.  /**********************************************************
  67.   * Main script                                            *
  68.   **********************************************************/
  69.  if ( $xml_data = file_get_contents($url) ) {
  70.      $rss_data = parse_rss($reg_exp, $xml_data);
  71.      echo output_rss($pattern, $rss_data);
  72.  }
  73.  /**********************************************************
  74.   * The END                                                *
  75.   **********************************************************/
  76.  ?>

Но скрипт не работает, а именно ошибок не выдает и нечего не вставляет в таблицу.
Как правильно вставить массив в таблицу(MySQL)?

(Отредактировано автором: 19 Июня, 2008 - 17:41:23)

 
 Top
RomAndry Администратор
Отправлено: 19 Июня, 2008 - 15:15:04
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008  


Помог: 6 раз(а)




Делайте простейший дебаг, а именно
перед query выведите результат в браузер и посмотрить оно или нет
а также после каждой mysql_*() функции желательно делать or die(mysql_error())
примерно так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $query="INSERT INTO ......ваш запрос......";
  4. echo $query;
  5. mysql_query($query) or die('SQL error '.mysql_error().' in '.$query);
  6. ?>
  7.  

так вы увидите что не работает.
Успехов!
 
My status
 Top
andreyphp
Отправлено: 19 Июня, 2008 - 17:50:05
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Июнь 2008  


Помог: 0 раз(а)




Я думаю, что здесь проблема не SQL запросе, а в $rss_data и в [$i]……я первую неделю изучаю php помогите затолкнуть, этот массив в БД.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« HTML, Дизайн & CSS »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB