За последние 24 часа нас посетил 20941 программист и 1136 роботов. Сейчас ищут 653 программиста ...

Импорт RSS

Тема в разделе "PHP для новичков", создана пользователем ART79, 25 май 2007.

  1. Riv

    Riv Активный пользователь

    С нами с:
    18 сен 2007
    Сообщения:
    6
    Симпатии:
    0
    Да, только из этого =)

    Спасибо огромное, помогло =)

    апд:

    всплыла такая проблема - сделал это на "черновике" сайта - все отлично работало. Залил на "чистовой" вариант - отображаються либо "крякозяблы" из последней цытаты (без добавления $item['title'] = iconv('UTF-8','CP1251',$item['title']); ) либо все до места новостей и ничего после (белый лист..)..

    что это может быть и как его решить? =(
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    1. включит вывод ошибок
    2. на хостинге не стоит iconv() либа
     
  3. vb

    vb Активный пользователь

    С нами с:
    6 июн 2006
    Сообщения:
    911
    Симпатии:
    0
    Адрес:
    Saint-Petersburg
  4. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Функция для преобразования XML в массив :) PHP 5+
    PHP:
    1. <?php
    2. $array = (array)simplexml_load_string("rss.xml");
     
  5. starkeen

    starkeen Активный пользователь

    С нами с:
    15 июн 2007
    Сообщения:
    37
    Симпатии:
    0
    А вот подскажите, не совсем в тему. В приведенном скрипте импорта RSS выводятся в качестве анонсов первые 150 символов статьи. А если при разбиении окажутся порезанными парные тэги, то результат будет совсем уж некрасивым. Незакрытый <b> исказит шрифты, а ссылки могут наслоиться друг на друга.
    Посему вопрос, что можете посоветовать, кроме неприменения тэгов? Можно ли как-то скопом закрыть их все?
     
  6. newnoob

    newnoob Активный пользователь

    С нами с:
    8 авг 2006
    Сообщения:
    151
    Симпатии:
    0
    Я вот тоже читаю топик и не совсем понял зачем вообще нужны классы если есть давно SimpleXML который на уря работает с XML в том числе и RSS каналами, давно написал себе модуль граббера который не только грабит анонс но и всё содержимое по тэгам поиска + сливает картинки (Алгоритм работы как у любого платного граббера тот же NewsGrabber).
     
  7. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    ну и выложи сюда исходник причесанный.
    пусть другие поучаться.
     
  8. dfg

    dfg Активный пользователь

    С нами с:
    2 фев 2007
    Сообщения:
    53
    Симпатии:
    0
    Адрес:
    Зеленоград
    Уважаемый Entrery в начале темы выложил переделаный код 440Hz, все замечательно работает, но вот картинку из новости убивает, вот часть кода, как я думаю именно она очищает текст от всякого хлама, но там есть картинка, ребята как зделать чтоб картинка осталась?



    PHP:
    1.  
    2. <? $DESC= str_replace("<![CDATA[","",$DESC);
    3.                $DESC= str_replace("]]>","",$DESC);
    4.                echo "<ul> <li class=\"cat-item cat-item-1\">".$DESC."...</li>";
    5. ?>
     
  9. AviOn

    AviOn Активный пользователь

    С нами с:
    16 июл 2007
    Сообщения:
    171
    Симпатии:
    0
    Адрес:
    Кировоград, Украина
    есть такой код rss
    как вынуть оттуда картинку??
     
  10. inkor

    inkor Активный пользователь

    С нами с:
    2 янв 2008
    Сообщения:
    2
    Симпатии:
    0
    помогите кто нибудь! как сделать чтобы этот код (представлен ниже) мог выводить новости постранично (например 20 новостей по 5 на страницу = 4 страницы) этот код подцепляю к странице вывода так

    <?

    echo DisplayRss("http://откуда брать новости", сколько выводить на странице);
    ?>

    Видел код пейджера от господина 440hz но ничего в нем не понял, вот если б их обединить как нибудь))


    PHP:
    1. <?php
    2.  
    3.    // выдирание RSS потоков
    4.    // 440hz
    5.  
    6.   ### TOOLS ###
    7.  
    8.    function GetXMLFirstVal($r,$t) {
    9.           if(preg_match_all('/<('.$t.')>(.*)<\/\\1>/Usi',$r,$o)) return $o[2][0];
    10.           return false;
    11.    }
    12.  
    13.    function GetXMLAllVal($r,$t) {
    14.           if(preg_match_all('/<('.$t.')>(.*)<\/\\1>/Usi',$r,$o)) return $o[2];
    15.           return array();
    16.    }
    17.  
    18.    function GetStream($URL,$mode=0) {
    19.  
    20.  
    21.       switch($mode) {
    22.  
    23.           // php
    24.           case 0:
    25.               $results = file_get_contents($URL);
    26.               break;
    27.  
    28.           // CURL
    29.           case 1:
    30.  
    31.               $ch = curl_init();
    32.               curl_setopt ($ch, CURLOPT_URL, $URL);            // Destination URL
    33.               curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);    // Output to a variable
    34.               curl_setopt ($ch, CURLOPT_POST, 0);                // Use HTTP POST
    35.               curl_setopt ($ch, CURLOPT_TIMEOUT, 20);            // Default Timeout
    36.  
    37.               $results = curl_exec($ch);
    38.               if(curl_error($ch)) {
    39.                   print_r(curl_getinfo($ch));
    40.                   exit();
    41.               }
    42.  
    43.               break;
    44.  
    45.           // SOCKETS
    46.           case 2:
    47.  
    48.               $info = parse_url($URL);
    49.  
    50.               $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    51.               if ($socket < 0) {
    52.                   echo "socket_create() failed: reason: " . socket_strerror($socket) . "\n";
    53.                   exit();
    54.               }
    55.               $result = socket_connect($socket, $info['host'], 80);
    56.               if ($result < 0) {
    57.                   echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n";
    58.               }
    59.  
    60.               $in  = "GET ".$info['path']." HTTP/1.1\r\n";
    61.               $in .= "Host: ".$info['host']."\r\n";
    62.               $in .= "Connection: Close\r\n\r\n";
    63.  
    64.               socket_write($socket, $in, strlen($in));
    65.  
    66.               $out = '';
    67.               $results = '';
    68.  
    69.               while ($out = socket_read($socket, 2048)) {
    70.                   $results .= $out;
    71.               }
    72.  
    73.               socket_close($socket);
    74.  
    75.               break;
    76.  
    77.           default:
    78.              $results = '';
    79.       }
    80.      return $results;
    81.    }
    82.  
    83.    ### TOOLS ###
    84.  
    85.    // RSS потоки
    86.    // ТОЛЬКО ссылки БЕЗ параметров!
    87.    // get.rss?a=b непокатит. тогда нужно юзать CURL
    88.    /*
    89.    $RSSS = array();
    90.    $RSSS[] = 'http://tarmans.kombats.ru/?module=news&cmd=rss';
    91.    $RSSS[] = 'http://www.paladins.ru/rss.php';
    92.     */
    93.    function DisplayRss($RSS,$j)
    94.     // перебираем потоки
    95.    {
    96.  
    97.       //print("\n$RSS");
    98.  
    99.       // получаем контент
    100.       // 0 - php
    101.       // 1- curl
    102.       // 2- sock
    103.       $XML = GetStream($RSS,0);
    104.  
    105.       if($XML) {
    106.  
    107.           // получаеми список всех ITEM
    108.           $ITEMS = GetXMLAllVal($XML,'item');
    109.               $g=0;
    110.           // перебираем ITEM
    111.           foreach($ITEMS AS $ITEM) {
    112.                 $g++;
    113.               // получаем данные
    114.               $TITLE = GetXMLFirstVal($ITEM,'title');
    115.               $LINK  = GetXMLFirstVal($ITEM,'link');
    116.               $DESC  = GetXMLFirstVal($ITEM,'description');
    117.               $DATE  = GetXMLFirstVal($ITEM,'pubDate');
    118.               $CAT  = GetXMLFirstVal($ITEM,'category');
    119.  
    120.               // ver 2.0
    121.               if(!$DATE) {
    122.                   $DATE = GetXMLFirstVal($ITEM,'dc:date');
    123.               }
    124.  
    125.               // конвертим дату в unixtime
    126.               if($DATE) $DATE = strtotime($DATE);
    127.               else      $DATE = time();
    128.  
    129.               // преобразуем спецсимволы
    130.               $TITLE = html_entity_decode($TITLE,ENT_QUOTES);
    131.               $DESC  = html_entity_decode($DESC,ENT_QUOTES);
    132.               $CAT  = html_entity_decode($CAT,ENT_QUOTES);
    133.  
    134.               print("\n<ul> <a href = '$LINK' target=_blank > $TITLE </a> ");
    135.               $DESC=strip_tags($DESC);
    136.                 $sl = strlen($DESC);
    137.                 if($sl>157){
    138.                     $DESC = str_split($DESC,156);
    139.                   $DESC = trim($DESC[0]);
    140.                                 }
    141.  
    142.                 $DESC= str_replace("<![CDATA[","",$DESC);
    143.                 $DESC= str_replace("]]>","",$DESC);
    144.                 echo "<li><i>".$DESC."...</i></li>";
    145.  
    146.               echo "<br>";
    147.                 echo "</ul>";
    148.                 if ($g==$j){break;}
    149.           }
    150.  
    151.       }
    152.    }
    153.  
    154.    // что б в шелле строку переводило ...
    155.    print("\n");
    156.  
    157.  
    158.    ?>
    [/php]
     
  11. inkor

    inkor Активный пользователь

    С нами с:
    2 янв 2008
    Сообщения:
    2
    Симпатии:
    0
    а чуть не забыл надо чтобы он еще и русский понимал ато выдает иероглифы?
    и еще как сделать чтобы в титле страници выводил заголовок первой новости?
     
  12. .50

    .50 Активный пользователь

    С нами с:
    7 июн 2006
    Сообщения:
    136
    Симпатии:
    0
    Адрес:
    СПб
    http://rssphp.net/ - отличный грабер rss, xml.

    Лень не дает описать все возможности. Но смею советовать...
     
  13. Yura1978

    Yura1978 Активный пользователь

    С нами с:
    4 июн 2008
    Сообщения:
    1
    Симпатии:
    0
    Симптом тот же.
    Настройка iconv() на хостинге:

    Код (Text):
    1. iconv
    2. iconv support   enabled
    3. iconv implementation    glibc
    4. iconv library version   1.11
    5.  
    6. Directive   Local Value Master Value
    7. iconv.input_encoding    ISO-8859-1  ISO-8859-1
    8. iconv.internal_encoding ISO-8859-1  ISO-8859-1
    9. iconv.output_encoding   ISO-8859-1  ISO-8859-1
    Что может помочь?
     
  14. gkhelloworld

    gkhelloworld Активный пользователь

    С нами с:
    18 ноя 2007
    Сообщения:
    311
    Симпатии:
    0
    Адрес:
    PHP.ru
  15. gkhelloworld

    gkhelloworld Активный пользователь

    С нами с:
    18 ноя 2007
    Сообщения:
    311
    Симпатии:
    0
    Адрес:
    PHP.ru
  16. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Забей на него, юзай SimpleXML (сам определяет кодировку RSS файла,
    а выход даёт в UTF-8, последнее как-то можно настроить, но я не помню)

    PHP:
    1. <?php
    2. $rss = simplexml_load_file('http://news.yandex.ru/hardware.rss');
    3. ?>
    4. <?foreach($rss->channel->item as $item):?>
    5.     <a href="<?=$item->link?>"><?=$item->title?></a><br>
    6.     <?=$item->description?><br>
    7.     Date: <?=$item->pubDate?><hr>
    8. <?endforeach?>
     
  17. gkhelloworld

    gkhelloworld Активный пользователь

    С нами с:
    18 ноя 2007
    Сообщения:
    311
    Симпатии:
    0
    Адрес:
    PHP.ru
    круто...спасибо. Владсон. а последнее исправить можно iconv ? или как там тема..
    мне тож надо получить UTF-8..а то что я импортирую в cp1251
    т.е. cp1251 --> UTF-8 и потом парсу давать.. пральна так?*
     
  18. gkhelloworld

    gkhelloworld Активный пользователь

    С нами с:
    18 ноя 2007
    Сообщения:
    311
    Симпатии:
    0
    Адрес:
    PHP.ru
    не...иконВ не получается
     
  19. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    PHP:
    1. <?=$item->description?>
    PHP:
    1. <?=iconv('utf-8', 'windows-1251', $item->description)?>
    И аналогично с
    PHP:
    1. <?=$item->title?>
    PHP:
    1. <?=iconv('utf-8', 'windows-1251', $item->title)?>
    Что тут не понятного ?

    Т.е

    PHP:
    1. <?php
    2. $rss = simplexml_load_file('http://news.yandex.ru/hardware.rss');
    3. ?>
    4. <?foreach($rss->channel->item as $item):?>
    5.     <a href="<?=$item->link?>"><?=iconv('utf-8', 'windows-1251', $item->title)?></a><br>
    6.     <?=iconv('utf-8', 'windows-1251', $item->description)?><br>
    7.     Date: <?=$item->pubDate?><hr>
    8. <?endforeach?>
     
  20. gkhelloworld

    gkhelloworld Активный пользователь

    С нами с:
    18 ноя 2007
    Сообщения:
    311
    Симпатии:
    0
    Адрес:
    PHP.ru
    точно..а я не так делал =) я протупил..я сделал отдельно!
     
  21. Созидатель

    Созидатель Активный пользователь

    С нами с:
    30 июн 2007
    Сообщения:
    25
    Симпатии:
    0
    Адрес:
    Россия, Шахты
    Вопрос интересный...

    Похожая проблема, только связанна какраз не с импортом, а экспортом RSS. Как можно обрезать все теги? Именно обрезать их, а не обработать htmlspecialchars() , чтобы не портили вид новостей.
    Нужно убрать все тэги из новости. Интуитивно чувствую, что как-то можно решить с помощью регулярок, но с ними знаком не на должном уровне.

    -----------------------------------------------------------

    UPD

    Спасибо, но уже нашёл выход
    strip_tags()
     
  22. Boroda

    Boroda Активный пользователь

    С нами с:
    20 окт 2008
    Сообщения:
    1
    Симпатии:
    0
    Cкачал, импортер RSS, предложенный .50.
    Вещь действительно хорошая. Только там не предусмотрены русские кодировки.
    При импорте с русскоязычных лент выводит обычно в utf-8.
    Может, кто-нибудь сможет помочь вписать туда русские кодировки.
    (если это возможно, конечно)
    Я сам не программист, поэтому до конца не понимаю...
    Вот сам импортер:

    Код (Text):
    1. <?php
    2. /*
    3.     RSS_PHP - the PHP DOM based RSS Parser
    4.     Author: <rssphp.net>
    5.     Published: 200801 :: blacknet :: via rssphp.net
    6.    
    7.     RSS_PHP is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY.
    8.  
    9.     Usage:
    10.         See the documentation at http://rssphp.net/documentation
    11.     Examples:
    12.         Can be found online at http://rssphp.net/examples
    13. */
    14.  
    15. class rss_php {
    16.    
    17.     public $document;
    18.     public $channel;
    19.     public $items;
    20.  
    21. /****************************
    22.     public load methods
    23. ***/
    24.     # load RSS by URL
    25.         public function load($url=false, $unblock=true) {
    26.             if($url) {
    27.                 if($unblock) {
    28.                     $this->loadParser(file_get_contents($url, false, $this->randomContext()));
    29.                 } else {
    30.                     $this->loadParser(file_get_contents($url));
    31.                 }
    32.             }
    33.         }
    34.     # load raw RSS data
    35.         public function loadRSS($rawxml=false) {
    36.             if($rawxml) {
    37.                 $this->loadParser($rawxml);
    38.             }
    39.         }
    40.        
    41. /****************************
    42.     public load methods
    43.         @param $includeAttributes BOOLEAN
    44.         return array;
    45. ***/
    46.     # return full rss array
    47.         public function getRSS($includeAttributes=false) {
    48.             if($includeAttributes) {
    49.                 return $this->document;
    50.             }
    51.             return $this->valueReturner();
    52.         }
    53.     # return channel data
    54.         public function getChannel($includeAttributes=false) {
    55.             if($includeAttributes) {
    56.                 return $this->channel;
    57.             }
    58.             return $this->valueReturner($this->channel);
    59.         }
    60.     # return rss items
    61.         public function getItems($includeAttributes=false) {
    62.             if($includeAttributes) {
    63.                 return $this->items;
    64.             }
    65.             return $this->valueReturner($this->items);
    66.         }
    67.  
    68. /****************************
    69.     internal methods
    70. ***/
    71.     private function loadParser($rss=false) {
    72.         if($rss) {
    73.             $this->document = array();
    74.             $this->channel = array();
    75.             $this->items = array();
    76.             $DOMDocument = new DOMDocument;
    77.             $DOMDocument->strictErrorChecking = false;
    78.             $DOMDocument->loadXML($rss);
    79.             $this->document = $this->extractDOM($DOMDocument->childNodes);
    80.         }
    81.     }
    82.    
    83.     private function valueReturner($valueBlock=false) {
    84.         if(!$valueBlock) {
    85.             $valueBlock = $this->document;
    86.         }
    87.         foreach($valueBlock as $valueName => $values) {
    88.                 if(isset($values['value'])) {
    89.                     $values = $values['value'];
    90.                 }
    91.                 if(is_array($values)) {
    92.                     $valueBlock[$valueName] = $this->valueReturner($values);
    93.                 } else {
    94.                     $valueBlock[$valueName] = $values;
    95.                 }
    96.         }
    97.         return $valueBlock;
    98.     }
    99.    
    100.     private function extractDOM($nodeList,$parentNodeName=false) {
    101.         $itemCounter = 0;
    102.         foreach($nodeList as $values) {
    103.             if(substr($values->nodeName,0,1) != '#') {
    104.                 if($values->nodeName == 'item') {
    105.                     $nodeName = $values->nodeName.':'.$itemCounter;
    106.                     $itemCounter++;
    107.                 } else {
    108.                     $nodeName = $values->nodeName;
    109.                 }
    110.                 $tempNode[$nodeName] = array();            
    111.                 if($values->attributes) {
    112.                     for($i=0;$values->attributes->item($i);$i++) {
    113.                         $tempNode[$nodeName]['properties'][$values->attributes->item($i)->nodeName] = $values->attributes->item($i)->nodeValue;
    114.                     }
    115.                 }
    116.                 if(!$values->firstChild) {
    117.                     $tempNode[$nodeName]['value'] = $values->textContent;
    118.                 } else {
    119.                     $tempNode[$nodeName]['value']  = $this->extractDOM($values->childNodes, $values->nodeName);
    120.                 }
    121.                 if(in_array($parentNodeName, array('channel','rdf:RDF'))) {
    122.                     if($values->nodeName == 'item') {
    123.                         $this->items[] = $tempNode[$nodeName]['value'];
    124.                     } elseif(!in_array($values->nodeName, array('rss','channel'))) {
    125.                         $this->channel[$values->nodeName] = $tempNode[$nodeName];
    126.                     }
    127.                 }
    128.             } elseif(substr($values->nodeName,1) == 'text') {
    129.                 $tempValue = trim(preg_replace('/\s\s+/',' ',str_replace("\n",' ', $values->textContent)));
    130.                 if($tempValue) {
    131.                     $tempNode = $tempValue;
    132.                 }
    133.             } elseif(substr($values->nodeName,1) == 'cdata-section'){
    134.                 $tempNode = $values->textContent;
    135.             }
    136.         }
    137.         return $tempNode;
    138.     }
    139.    
    140.     private function randomContext() {
    141.         $headerstrings = array();
    142.         $headerstrings['User-Agent'] = 'Mozilla/5.0 (Windows; U; Windows NT 5.'.rand(0,2).'; en-US; rv:1.'.rand(2,9).'.'.rand(0,4).'.'.rand(1,9).') Gecko/2007'.rand(10,12).rand(10,30).' Firefox/2.0.'.rand(0,1).'.'.rand(1,9);
    143.         $headerstrings['Accept-Charset'] = rand(0,1) ? 'en-gb,en;q=0.'.rand(3,8) : 'en-us,en;q=0.'.rand(3,8);
    144.         $headerstrings['Accept-Language'] = 'en-us,en;q=0.'.rand(4,6);
    145.         $setHeaders =   'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'."\r\n".
    146.                         'Accept-Charset: '.$headerstrings['Accept-Charset']."\r\n".
    147.                         'Accept-Language: '.$headerstrings['Accept-Language']."\r\n".
    148.                         'User-Agent: '.$headerstrings['User-Agent']."\r\n";
    149.         $contextOptions = array(
    150.             'http'=>array(
    151.                 'method'=>"GET",
    152.                 'header'=>$setHeaders
    153.             )
    154.         );
    155.         return stream_context_create($contextOptions);
    156.     }
    157.    
    158. }
    159.  
    160. ?>
     
  23. berkoot7

    berkoot7 Активный пользователь

    С нами с:
    23 фев 2009
    Сообщения:
    82
    Симпатии:
    0
    подскажите плиз...
    вот нашел код
    PHP:
    1. <?php
    2. /**********************************************************
    3.  * Parse XML data into an array structure                 *
    4.  * Usage: array parse_rss ( string data )                 *
    5.  **********************************************************/
    6. function parse_rss($reg_exp, $xml_data) {
    7.     preg_match_all($reg_exp, $xml_data, $temp);
    8.     return array(
    9.         'count'=>count($temp[0]),
    10.         'title'=>$temp[1],
    11.         'link'=>$temp[2],
    12.         'desc'=>$temp[3],
    13.         'pubdate'=>$temp[4]   //добавлено
    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.     $temp = "";
    23.     for($i=0; $i<$rss_data['count']; $i++) {
    24.         $temp .= sprintf($pattern,
    25.             $rss_data['link'][$i],
    26.             html_entity_decode($rss_data['title'][$i]),
    27.             html_entity_decode($rss_data['desc'][$i]),
    28.             $rss_data['pubdate'][$i]   //добавлено
    29.         );
    30.     }
    31.     return $temp;
    32. }
    33.  
    34. /**********************************************************
    35.  * Settings                                               *
    36.  **********************************************************/
    37. $url = 'http://fashionstreet.ru/news/rss.xml';
    38.  
    39. $reg_exp  = '#<item>.*?<title>(.*?)<\/title>.*?';
    40. $reg_exp .='<link>(.*?)<\/link>.*?<description>';
    41. $reg_exp .='(.*?)<\/description>.*?<pubDate>'; //исправлено
    42. $reg_exp .= '(.*?)<\/pubDate>.*?<\/item>#si';  //добавлено
    43.  
    44. $pattern = '<a href="%s">%s</a><br>%s<br>Date: %s<hr>';
    45.  
    46. /**********************************************************
    47.  * Main script                                            *
    48.  **********************************************************/
    49. if ( $xml_data = file_get_contents($url) ) {
    50.     $rss_data = parse_rss($reg_exp, $xml_data);
    51.     echo output_rss($pattern, $rss_data);
    52. }
    53. /**********************************************************
    54.  * The END                                                *
    55.  **********************************************************/
    56. ?>
    что нужно удалить чтоб выводились только title с линками
    и в догонку вопрос... например чтоб тока первые 5 выводились
     
  24. berkoot7

    berkoot7 Активный пользователь

    С нами с:
    23 фев 2009
    Сообщения:
    82
    Симпатии:
    0
    а вообще может ктонить дать код чтоб новости пихались сразу в БД, обновление вручную сделать
    в общем надо чтоб новости с другого сайта пихались в БД а потом выводились из неё на моем сайте
    как? )))
     
  25. ma1oy

    ma1oy Активный пользователь

    С нами с:
    26 май 2009
    Сообщения:
    4
    Симпатии:
    0
    Добрый день, у меня здесь появилась проблема, подскажите что не так, сам не программист...
    Дело в чем, нужно спарсить с сайта RSS новости и положить аккуратно в базу, вроде все хорошо работало с кодом ниже, но появилась проблема, когда появляются новые новости, начинаются дублироваться и старые новости, решил сделать проверку, но почемуто не работает (второй код)...



    PHP:
    1.  
    2. <?
    3. $query = "INSERT INTO b_iblock_element (NAME,DETAIL_TEXT,DATE_CREATE,TIMESTAMP_X,ACTIVE_FROM,IBLOCK_ID,DETAIL_TEXT_TYPE,CREATED_BY) VALUES('".
    4.    $TITLE."','".$DESC."','".date('Y-m-d H:i:s',$DATE)."','".date('Y-m-d H:i:s',$DATE)."','".date('Y-m-d H:i:s',$DATE)."','".$BLOCK."','".$TEXTTYPE."','".$CREATEDBY."')";
    5.    
    6.                 $result = mysql_query($query);
    7.                
    8.                 print($result);
    9. ?>
    10.  



    PHP:
    1.  
    2. <?
    3. $newsold = mysql_query("SELECT * FROM b_iblock_element WHERE NAME = '$TITLE'");
    4.             if(!$newsold) {
    5.               $query = "INSERT INTO b_iblock_element (NAME,DETAIL_TEXT,DATE_CREATE,TIMESTAMP_X,ACTIVE_FROM,IBLOCK_ID,DETAIL_TEXT_TYPE,CREATED_BY) VALUES('".
    6.    $TITLE."','".$DESC."','".date('Y-m-d H:i:s',$DATE)."','".date('Y-m-d H:i:s',$DATE)."','".date('Y-m-d H:i:s',$DATE)."','".$BLOCK."','".$TEXTTYPE."','".$CREATEDBY."')";
    7.               $result = mysql_query($query);
    8.           print($result);
    9.               print("insert");
    10.           } else {
    11.               $query = "UPDATE b_iblock_element SET NAME = '".$TITLE."', DETAIL_TEXT = '".$DESC."', DATE_CREATE = '".date('Y-m-d H:i:s',$DATE)."', TIMESTAMP_X = ".date('Y-m-d H:i:s',$DATE)."', ACTIVE_FROM = ".date('Y-m-d H:i:s',$DATE)."', IBLOCK_ID = ".$BLOCK."', DETAIL_TEXT_TYPE = ".$TEXTTYPE."', CREATED_BY = ".$CREATEDBY."' WHERE NAME = '$TITLE'";
    12.               $result = mysql_query($query);
    13.               print($result);
    14.               print("update");
    15.              
    16.          }
    17. ?>
    18.  
    PS вот результат работы скрипта с последним кодом, только первые 2 новости он должен добавить а не просто обновить...
    Код (Text):
    1.  
    2. [2009-05-26 15:02:39] - [Что будет с Сердюковым]update
    3. [2009-05-26 14:08:38] - [Ревизия на границе]update
    4. [2009-05-26 14:05:23] - [Таможенный пункт пропуска будет установлен на Финляндском вокзале Санкт- Петербурга]update
    5. [2009-05-26 13:59:07] - [Новый логоцентр в ожидании арендаторов]update
    6. [2009-05-26 13:52:10] - [Эффект новой логистики АВТОВАЗа]update