Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne] Kanał RSS / jak dodać ?
Forum PHP.pl > Forum > Przedszkole
Mega_88
Cześć wszystkim !

Mam mały problem z tego co przeczytałem zapewne jest to błahy problem, ale potrzebuje kogoś kto wyjaśni mi to w jakiś logiczny sposób i powie lub przynajmiej podpowie jak to zrobić. Przewertowałem już kilkanaście artykułów na ten temat i nadal nie wiem jak mam to zrobić.
Mam zrobioną stronę, system CMS, treści pobierane z MySQL, system newsów. Jak dodać do tego wszystkiego RSS ? Nie wiem jak to wyjaśnić mam nadzieje, że zrozumiecie o co mi chodzi... dry.gif
Może ktoś pomóc, wyjaśnić, ale już nie jak 5 latkowi tylko dla 2 latka ? Na stronie ma się znajdować ikona RSS po kliknięciu, której ma to zacząć działać, ja wymiękam...
potreb
  1. <?php
  2. function news($pdo, $limit) {
  3. $sql = $pdo->query("
  4. SELECT * FROM `NEWSY` ORDER BY DATE
  5. LIMIT 0, ".$limit."
  6. ");
  7. $rows = $sql->fetchAll();
  8. return $rows;
  9. }
  10.  
  11. $news = news(20);
  12.  
  13. header('Content-type: application/xml; charset="utf-8"');
  14. echo '<?xml version="1.0" encoding="utf-8"?>
  15. <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  16. <channel>
  17. <title>'.$settings['sitename'].'</title>
  18. <atom:link href="'._siteurl.'/rss" rel="self" type="application/rss+xml" />
  19. <link>'.$settings['siteurl'].'</link>
  20. <description>Kanał RSS</description>
  21. <language>pl</language>
  22. <copyright>'.$settings['siteurl'].'</copyright>';
  23.  
  24. foreach($news as $row) {
  25. <item>
  26. <title>'.$row['title'].'</title>
  27. <thumb>'. _siteurl . '/' . $row['image'].'</thumb>
  28. <link>'. _siteurl . '/' . $row['pages_symbol'] . '/extend/' . $row['id'] . '/'.$row['url'] . '</link>
  29. <date>'.showdate($row['start'], 'newsdate').'</date>
  30. <description>' . $row['text'] . '</description>
  31. <category>' . $row['pages_name'] . '</category>
  32. <author></author>
  33. </item>';
  34. }
  35. echo '</channel>
  36. </rss>';
  37.  
  38. ?>
Mega_88
Wygląda interesująco tylko powiedz mi gdzie to wklejam ? Do index.php i odpowiednio modyfikuje ? Jak podlinkować do tego ikone RSS ?
potreb
Robisz sobie plik rss.php, następnie wklejasz kod. Zmieniasz funkcję która pobiera newsy i tyle. Wywołasz rss.php i zobaczysz.

Zapewne nie używasz pdo, więc musisz zmienić sobie na mysql_query i swój kod sql. Dodatkowo musi być ustanowione połączenie z bazą.
Mega_88
  1. <?php
  2. mysql_connect('host','nazwa bd','haslo') or die ('Nie mogę się połączyć z bazą danych.');
  3. mysql_select_db('nazwa bd') or die ('Baza danych nie istnieje.');
  4. mysql_query("SET NAMES 'utf8'");
  5.  
  6.  
  7. function produkty_rss($lang,$idstrony,$kategoria) {
  8. $query=mysql_query("SELECT * FROM produkty WHERE kategoria='$kategoria' ORDER BY id DESC");
  9. while($wynik=mysql_fetch_array($query)) {
  10.  
  11. $o .= '
  12. <div class="produkt">
  13. ';
  14. if($_GET['idproduktu']==$wynik['id']) {
  15. $o.='<span>'.substr(strip_tags(lang($lang,$wynik['nazwa'],$wynik['nazwaen'],$wynik['nazwade'],$wynik['nazwaru'])),0,200).'</span>';
  16. }
  17. else {
  18. $o.='
  19. <a href="'.friendlyUrl_produkty($idstrony,$wynik['id'],$kategoria,$lang).'">
  20. '.substr(strip_tags(lang($lang,$wynik['nazwa'],$wynik['nazwaen'],$wynik['nazwade'],$wynik['nazwaru'])),0,200).'
  21. </a>';
  22. }
  23. $o.='
  24. </div>';
  25.  
  26. }
  27.  
  28. return $o;
  29. }
  30.  
  31. header('Content-type: application/xml; charset="utf-8"');
  32.  
  33. echo '<?xml version="1.0" encoding="utf-8"?>
  34.  
  35. <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  36.  
  37. <channel>
  38.  
  39. <title>'.$settings['sitename'].'</title>
  40.  
  41. <atom:link href="'._siteurl.'/rss" rel="self" type="application/rss+xml" />
  42.  
  43. <link>'.$settings['siteurl'].'</link>
  44.  
  45. <description>Kanał RSS</description>
  46.  
  47. <language>pl</language>
  48.  
  49. <copyright>'.$settings['siteurl'].'</copyright>';
  50.  
  51.  
  52.  
  53. foreach($news as $row) {
  54.  
  55.  
  56. <item>
  57.  
  58. <title>'.$wynik['nazwa'].'</title>
  59.  
  60. <thumb>'. _siteurl . '/' . $row['image'].'</thumb>
  61.  
  62. <link>'. _siteurl . '/' . $row['pages_symbol'] . '/extend/' . $row['id'] . '/'.$row['url'] . '</link>
  63.  
  64. <date>'.showdate($row['start'], 'newsdate').'</date>
  65.  
  66. <description>' $wynik['opis'] '</description>
  67.  
  68. <category>' . $row['pages_name'] . '</category>
  69.  
  70. <author></author>
  71.  
  72. </item>';
  73.  
  74. }
  75.  
  76. echo '</channel>
  77.  
  78. </rss>';
  79.  
  80.  
  81.  
  82. ?>


Mam coś takiego, dalej za bardzo nie wiem jak to zrobić. Możesz troche pomóc to dokończyć ? Czy w pliku .htaccess mam też coś dodawać ?
potreb
W funkcji która zwraca ci wyniki nie zwracasz nic innego niż tablica
  1. function produkty_rss($lang,$idstrony,$kategoria) {
  2. $wynik = array();
  3. $query=mysql_query("SELECT * FROM produkty WHERE kategoria='$kategoria' ORDER BY id DESC");
  4. while($wynik=mysql_fetch_array($query)) {
  5. $fetch[] = $wynik;
  6. }
  7.  
  8. return $fetch;
  9. }


Pózniej zwrócone wyniki rozbijasz w foreachu. Jeżeli nie wiesz co ci zwraca i jak to robisz sobie print_r wyników.

  1. $news = produkty_rss($lang,$idstrony,$kategoria);
  2. print_r($news);


Oczywyiście musisz jeszcze przekazać argumenty do funkcji (np poprzez get rss.php?lang=pl&id_strony=1&cat=2) czyli język, id strony i kategorię. A tego nie robisz.
Mega_88
Mam coś takiego, działa hmm cięzko mi powiedzieć czy dobrze. Wyświetla kanał RSS, ale tylko z ostatnio dodanym newsem. Jak zrobić żeby wyświetlało mi wszystkie dodane newsy ?
W bazie mam jeszcze podział na kategorie tych newsów w formie (kategoria=1, kategoria=2)

Mam napisane coś takiego i nie wiem jak to rozwinąć:

  1. <?php
  2. mysql_connect('xxx','xxx','xxx') or die ('Nie mogę się połączyć z bazą danych.');
  3. mysql_select_db('xxx') or die ('Baza danych nie istnieje.');
  4. mysql_query("SET NAMES 'utf8'");
  5.  
  6. header('Content-type: application/xml; charset="utf-8"');
  7. echo '<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  8.  
  9. <channel>';
  10.  
  11. $zapytanie = 'SELECT * FROM produkty ORDER BY id DESC LIMIT 5';
  12. mysql_query('SET character_set_connection=utf8');
  13. mysql_query('SET character_set_client=utf8');
  14. mysql_query('SET character_set_results=utf8');
  15. $wynik = mysql_query($zapytanie) or die(mysql_error());
  16. while($wynik = mysql_fetch_array($wynik)) {
  17. echo '
  18. <item>
  19. <title>'.$wynik['nazwa'].'</title>
  20. <link></link>
  21. <description>'.htmlspecialchars(strip_tags($wynik['opis'],''),0,250).' ...</description>
  22. </item>';
  23. }
  24.  
  25. echo '</channel></rss>';
  26. return $zapytanie;
  27. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.