Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Czytnik RSS ALLEGRO na Twojej stronie WWW, Co gdy nie ma wiadomości RSS (aukcji)?
floydrose
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 10.05.2009

Ostrzeżenie: (0%)
-----


Witajcie

Mam takie zmartwienie ze skryptem: chciałbym utworzyć czytnik RSS moich aukcji, przykładowo "http://www.allegro.pl/rss.php?feed=user&uid=666". Wszystko jest fajnie, gdy posiadam jakieś aukcje (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Gdy np. nie można się połączyć z kanałem RSS, pojawia się "nie można połączyć sie z kanałem RSS". Chciałbym też, aby w przypadku gdy nie ma żadnych aukcji, w miejscu czytnika pojawiła się informacja "Brak aktualnych ofert w serwisie Allegro.pl".

Przedstawiam kod czytnika:

  1. <?php
  2.  
  3.  #===========================================
  4.  # Silnik tego skryptu zapożyczony został z czytnika RSS w wersji PHP z
  5.  # oprogramowania RSS GET, oryginalna wersja programu na stronie: <a href=\"http://www.aarondunlap.com\" target=\"_blank\">http://www.aarondunlap.com</a>
  6.  #===========================================
  7.  
  8.  $czas = 60; // Co ile ma być aktualizacja
  9.  
  10.  $folder = "str/aukcje/"; // Adres folderu, w którym znajdować się będą pliki z newsami.
  11.  
  12.  $adres = "http://www.allegro.pl/rss.php?feed=user&uid=613777"; // Adres URL do kanału RSS
  13.  $nazwa_kanalu = "RSS RGP Allegro"; // Tytuł kanału RSS
  14.  $liczba = 6; // Ilośc nagłówków newsów, które mają być wyswietlane
  15.  $target = "_blank"; // Opcja target="" dla newsów, możliwe: "_self" oraz "_blank"
  16.  $autoupdate = TRUE;
  17.  $trunc = FALSE;
  18.  $delim = FALSE;
  19.  
  20.  if (isset($_GET['rssHeadline'])) { $rssHeadline = $_GET['rssHeadline'];}
  21.  $basefile = $folder;
  22.  $folder .= md5($adres).".htm"; // Przygotowywanie nazw plików dla danego kanału
  23.  
  24.  #==========================
  25.  # Operacje związane ze sprawdzaniem aktualności nagłówków w pliku tekstowym
  26.  #==========================
  27.  
  28.  if (($czas > 0) && (is_file($folder)) && (((time()-filemtime($folder)) < ($czas * 60)))) {
  29.      include $folder;
  30.    $time = floor((time()-filemtime($folder)) / 60); // Sprawdza ile minut temu plik był aktualizowany
  31.      
  32.  } elseif (@fopen($adres,"r")) { // Sprawdza czy ma dostęp do kanału RSS
  33.  
  34.        #==========================
  35.      # Operacja związane z dodawaniem nowego nagłówka do pliku
  36.      #==========================
  37.  
  38.      $rssHandle = fopen($adres,"r"); // Otwiera plik kanału RSS
  39.  
  40.      while (!feof($rssHandle)) {
  41.          $rssData .= fgets($rssHandle);
  42.      }
  43.  
  44.      #==========================
  45.      # Przygotowywanie newsa do włączenia do pliku
  46.      #==========================
  47.      $tag = "item ";
  48.      $rssData =  preg_replace("/<" . $tag . "(.|s)*?>/","<item>",$rssData);
  49.      $rssData = chop($rssData); // Usuwanie pustych spacji z końca linijek  
  50.      $rssData = ereg_replace("[r,\n]", "", $rssData); // Usuwwanie pustych linijek
  51.      $rssData = strstr($rssData,"<item>"); // Usuwanie wszystie przez <item>.
  52.        
  53.      #==========================
  54.      # Usuwanie zbędnych elemntów tak aby okrojona zawartość mogła zostać zapisana w pliku
  55.  
  56.      # Tagi <description></description> zostają pominięte
  57.      #==========================      
  58.      $tags_and_content_to_strip = Array("description");
  59.  
  60.      foreach ($tags_and_content_to_strip as $tag) {
  61.           $rssData = preg_replace("/<" . $tag . ">(.|s)*?</" . $tag . ">/","",$rssData);
  62.      }
  63.  
  64.      $rssData = str_replace("<item>","", $rssData); // usuwanie tagu <item>
  65.      $rssData = urldecode($rssData); // Zamiana wszystkich: %20 na spacje.
  66.      $rssData = str_replace(strstr("</channel>",$rssData),"",$rssData);
  67.      $rssArray = explode("</item>",$rssData); // Tworzenie tablicy z nagłówkami
  68.  
  69.        $title = array();
  70.      $link = array();
  71.  
  72.      #==========================
  73.      # Ten mechanizm tworzy tablice dla linków oraz nagłówków
  74.      #==========================  
  75.      $x = 0;
  76.      while($x < $liczba) {
  77.          $link[$x] = strstr($rssArray[$x],"<link>"); // usuwanie wszystkiego przed <link>
  78.        $link[$x] = ereg_replace("<link>","",$link[$x]);
  79.         $link[$x] = str_replace(strstr($link[$x],"</link>"),"",$link[$x]);
  80.         $link[$x] = trim($link[$x]);
  81.        $title[$x] = strstr($rssArray[$x],"<title>");
  82.          $title[$x] = ereg_replace("<title>","",$title[$x]); // Usuwanie <title> z części tytułu newsa
  83.          $title[$x] = str_replace(strstr($title[$x],"</title>"),"",$title[$x]); //  Usuwanie </title> oraz wszystkiego poza nim
  84.          $title[$x] = trim($title[$x]);
  85.            $title[$x] = str_replace("wieść: ","",$title[$x]);// omija dane slowa, przydatne przy zwyklych kanałach rss
  86.            $title[$x] = str_replace("galeria: ","",$title[$x]);// omija dane slowa,  przydatne przy zwyklych kanałach rss
  87.            $title[$x] = str_replace("recenzja: ","",$title[$x]);// omija dane slowa,  przydatne przy zwyklych kanałach rss
  88.        
  89.        if ($trunc != FALSE) { $title[$x] = str_replace(substr($title[$x],$trunc),"",$title[$x]); }
  90.        if ($delim != FALSE) { $title[$x] = str_replace(strstr($title[$x],$delim),"",$title[$x]); }
  91.        
  92.            if ($title[$x] == "") { $liczba = $x; break; } // Gdy już nie ma nagłówków zmienna $liczba przyjmuje wartość maksumalną.
  93.        $x++;
  94.      }
  95.  
  96.      #==========================
  97.      # Zapis do pliku
  98.      #==========================
  99.      $fp = fopen($folder, "w+");
  100.      $x=0;  
  101.      while ($x < $liczba) { // ta pętla zapisuje każdy link osobno.
  102.        fwrite($fp,"<img src=\"gwiazdka.gif\">&nbsp;<a class=\"menu3\" target=\"$target\" href=\"$link[$x]\">$title[$x]</a><br>\n");
  103.        $x++;
  104.      }
  105.     fclose($fp);
  106.     include $folder;
  107.  
  108. } else {
  109.    #==========================
  110.    # Zwracanie błędu gdy podany adres jest błędny.
  111.    #==========================
  112.    echo "<b>Nie można połączyć się z adresem RSS.</b>";
  113.  
  114. }
  115.  
  116. ?>


serdecznie dziękuję za odpowiedzi (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

to jest zwykle php, chodzi o to, żeby wykonać coś w stylu "IF nie ma wyników" to wtedy write "nie ma żadnych aukcji" (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) tylko nie wiem jaka to ma być składnia i gdzie ją dokładnie dać... ehh

Ten post edytował floydrose 31.05.2009, 17:10:09
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
floydrose
post
Post #2





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 10.05.2009

Ostrzeżenie: (0%)
-----


Zamieszczam cały skrypt. Mam jeszcze jedno pytanie. Skrypt spełnia swoje funkcje jeśli znajdują się wiadomości (aukcje) w kanale RSS Allegro. Jeśli nie ma żadnych aukcji, to warunek "$czas = 0;" jest konieczny, inaczej nie wyświetla komunikatu "Brak aktualnych ofert<br>w serwisie Allegro.pl.". Tutaj pytanie: dlaczego (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ? przyznam, że chciałbym, aby aktualizacja była sprawdzana co 30 minut, ale wg obecnego skryptu nie będzie pokazywało "brak aktualnych ofert...". Co zrobić?

  1. <?php
  2.  
  3.  #===========================================
  4.  # Silnik tego skryptu zapożyczony został z czytnika RSS w wersji PHP z
  5.  # oprogramowania RSS GET, oryginalna wersja programu na stronie: <a href=\"http://www.aarondunlap.com\" target=\"_blank\">http://www.aarondunlap.com</a>
  6.  #===========================================
  7.  
  8.  $czas = 0; // Co ile ma być aktualizacja
  9.  
  10.  $folder = "str/aukcje/"; // Adres folderu, w którym znajdować się będą pliki z newsami.
  11.  
  12.  $adres = "http://www.allegro.pl/rss.php?feed=user&uid=613777"; // Adres URL do kanału RSS
  13.  $nazwa_kanalu = "RSS RGP Allegro"; // Tytuł kanału RSS
  14.  $liczba = 8; // Ilośc nagłówków newsów, które mają być wyswietlane
  15.  $target = "_blank"; // Opcja target="" dla newsów, możliwe: "_self" oraz "_blank"
  16.  $autoupdate = TRUE;
  17.  $trunc = FALSE;
  18.  $delim = FALSE;
  19.  
  20.  if (isset($_GET['rssHeadline'])) { $rssHeadline = $_GET['rssHeadline'];}
  21.  $basefile = $folder;
  22.  $folder .= md5($adres).".htm"; // Przygotowywanie nazw plików dla danego kanału
  23.  
  24.  #==========================
  25.  # Operacje związane ze sprawdzaniem aktualności nagłówków w pliku tekstowym
  26.  #==========================
  27.  
  28.  if (($czas > 0) && (is_file($folder)) && (((time()-filemtime($folder)) < ($czas * 60)))) {
  29.      include $folder;
  30.    $time = floor((time()-filemtime($folder)) / 60); // Sprawdza ile minut temu plik był aktualizowany
  31.      
  32.  } elseif (@fopen($adres,"r")) { // Sprawdza czy ma dostęp do kanału RSS
  33.  
  34.      #==========================
  35.      # Operacja związane z dodawaniem nowego nagłówka do pliku
  36.      #==========================
  37.  
  38.      $rssHandle = fopen($adres,"r") ; // Otwiera plik kanału RSS
  39.  
  40.      while (!feof($rssHandle)) {
  41.          $rssData .= fgets($rssHandle);
  42.      }
  43.  
  44.      #==========================
  45.      # Przygotowywanie newsa do włączenia do pliku
  46.      #==========================
  47.      $tag = "item ";
  48.      $rssData =  preg_replace("/<" . $tag . "(.|s)*?>/","<item>",$rssData);
  49.      $rssData = chop($rssData); // Usuwanie pustych spacji z końca linijek  
  50.      $rssData = ereg_replace("[r,\n]", "", $rssData); // Usuwwanie pustych linijek
  51.      $rssData = strstr($rssData,"<item>"); // Usuwanie wszystie przez <item>.
  52.        
  53.        #==========================
  54.      # Operacje związane z brakiem wiadomości RSS   exit();  
  55.      #==========================
  56.        if (!preg_match("/item/i", $rssData)) {
  57.        echo "<center>Brak aktualnych ofert<br>w serwisie Allegro.pl.</center>";
  58.                }
  59.      #==========================
  60.      # Usuwanie zbędnych elemntów tak aby okrojona zawartość mogła zostać zapisana w pliku
  61.  
  62.      # Tagi <description></description> zostają pominięte
  63.      #==========================      
  64.      $tags_and_content_to_strip = Array("description");
  65.  
  66.      foreach ($tags_and_content_to_strip as $tag) {
  67.           $rssData = preg_replace("/<" . $tag . ">(.|s)*?</" . $tag . ">/","",$rssData);
  68.      }
  69.  
  70.      $rssData = str_replace("<item>","", $rssData); // usuwanie tagu <item>
  71.      $rssData = urldecode($rssData); // Zamiana wszystkich: %20 na spacje.
  72.      //$rssData = str_replace(strstr("</channel>",$rssData),"",$rssData);
  73.        $rssArray = explode("</item>",$rssData); // Tworzenie tablicy z nagłówkami
  74.  
  75.        $title = array();
  76.      $link = array();
  77.  
  78.      #==========================
  79.      # Ten mechanizm tworzy tablice dla linków oraz nagłówków
  80.      #==========================  
  81.      $x = 0;
  82.      while($x < $liczba) {
  83.          $link[$x] = strstr($rssArray[$x],"<link>"); // usuwanie wszystkiego przed <link>
  84.        $link[$x] = ereg_replace("<link>","",$link[$x]);
  85.         $link[$x] = str_replace(strstr($link[$x],"</link>"),"",$link[$x]);
  86.         $link[$x] = trim($link[$x]);
  87.        $title[$x] = strstr($rssArray[$x],"<title>");
  88.          $title[$x] = ereg_replace("<title>","",$title[$x]); // Usuwanie <title> z części tytułu newsa
  89.          $title[$x] = str_replace(strstr($title[$x],"</title>"),"",$title[$x]); //  Usuwanie </title> oraz wszystkiego poza nim
  90.          $title[$x] = trim($title[$x]);
  91.        
  92.        if ($trunc != FALSE) { $title[$x] = str_replace(substr($title[$x],$trunc),"",$title[$x]); }
  93.        if ($delim != FALSE) { $title[$x] = str_replace(strstr($title[$x],$delim),"",$title[$x]); }
  94.        
  95.            if ($title[$x] == "") { $liczba = $x; break; } // Gdy już nie ma nagłówków zmienna $liczba przyjmuje wartość maksumalną.
  96.        $x++;
  97.      }
  98.  
  99.      #==========================
  100.      # Zapis do pliku
  101.      #==========================
  102.      $fp = fopen($folder, "w+");
  103.      $x=0;  
  104.      while ($x < $liczba) { // ta pętla zapisuje każdy link osobno.
  105.        fwrite($fp,"<img src=\"gwiazdka.gif\">&nbsp;<a class=\"menu3\" target=\"$target\" href=\"$link[$x]\">$title[$x]</a><br>\n");
  106.        $x++;
  107.      }
  108.     fclose($fp);
  109.     include $folder;
  110.  
  111. } else {
  112.    #==========================
  113.    # Zwracanie błędu gdy podany adres jest błędny.
  114.    #==========================
  115.    echo "<b>Nie można połączyć się z adresem RSS.</b>";
  116.  
  117. }
  118.  
  119. ?>


Odświeżam temat (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) i proszę o sugestie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował floydrose 2.07.2009, 16:17:51
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.12.2025 - 23:18