Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Błąd z kanałem rss w php
Forum PHP.pl > Forum > PHP
Grzesiek90
Witam. Mam następujący problem. Na forum chcę zrobić kanał RSS. I mam taką gotową modyfikację:
Kod
<?php

// RSSmod for phpbb by przemo
// ver. 0.7
// by uki_uki1

header('Content-type: application/rss+xml; Charset: iso-8859-2;');
require_once('config.php');

$ignore = 0; // forum ¶mietnik które ma nie być brane pod uwagę 0 je¶li brak
$allow = 1;
// umożliwa wybranie jakie wiadomo¶ci będ± dostępne
// 0 tylko z for widocznych dla go¶ci
// 1 z widocznych dla go¶ci i zarejestrowanych
// można ustawić więcej ale jest to niezalecane (pokaże z dostępnych modom (2) i (4) adminom oraz (3) prywatnych)

$limit = 50; // ile ostatnich postów ma być w kanale
$title = "RSS: Forum xxx"; // tytuł kanału
$description = "RSS: Forum xxx"; // opis kanału
$url = "http://xxx"; // adres url bez uko¶nika na końcu

function bbcode($tekst,$uid){
  str_replace($uid, "", $tekst);
  $tekst = nl2br($tekst);
    $tekst = preg_replace("#\[b\](.*?)\[/b\]#si",'<b>\\1</b>',$tekst);
  $tekst = preg_replace("#\[i\](.*?)\[/i\]#si",'<i>\\1</i>',$tekst);
  $tekst = preg_replace("#\[u\](.*?)\[/u\]#si",'<u>\\1</u>',$tekst);
  $tekst = preg_replace("#\[s\](.*?)\[/s\]#si",'<s>\\1</s>',$tekst);

  //odno¶nik www
  $tekst = preg_replace("#\[url\](http.*?)\[/url\]#si", "<A HREF=\"\\1\" TARGET=\"_blank\">\\1</A>", $tekst);
  $tekst = preg_replace("#\[url=(http.*?)\](.*?)\[/url\]#si", "<A HREF=\"\\1\" TARGET=\"_blank\">\\2</A>", $tekst);

  // cytat
  $tekst = preg_replace("#\[quote\](.*?)\[/quote\]#si",'<blockquote>\\1</blockquote>',$tekst); //bez
  $tekst = preg_replace("#\[quote=(.*?)\](.*?)\[/quote\]#si",'<p><cite>\\1</cite> napisał:</p><blockquote>\\2</blockquote>',$tekst); // z
  
  //kod
  $tekst = preg_replace("#\[code:1\](.*?)\[/code:1\]#si",'<blockquote>\\1</blockquote>',$tekst);
  $tekst = preg_replace("#\[code\](.*?)\[/code\]#si",'<blockquote>\\1</blockquote>',$tekst);

  //center
  $tekst = preg_replace("#\[center\](.*?)\[/center\]#si",'<center>\\1</center>',$tekst);
  
  //img
  $tekst = preg_replace("#\[img\](.*?)\[/img\]#si",'<a href="\\1">[obrazek]</a>',$tekst);
  
  //size
  $tekst = preg_replace("#\[size=(.*?)\](.*?)\[/size\]#si",'<font size="\\1">\\2</font>',$tekst);
  
  //color
  $tekst = preg_replace("#\[color=(.*?)\](.*?)\[/color\]#si",'<font color="\\1">\\2</font>',$tekst);
  
  //lista
  $tekst = preg_replace("#\[list\](.*?)\[/list:u\]#si",'<p>[lista]<br />\\1[/]</p>',$tekst);
  
  //zbedne
  $tekst = preg_replace("#\[shadow=(.*?)\](.*?)\[/shadow\]#si",'\\2',$tekst);
  $tekst = preg_replace("#\[hidden\](.*?)\[/hidden\]#si",'[ukryte]',$tekst);
  $tekst = preg_replace("#\[fade\](.*?)\[/fade\]#si",'\\1',$tekst);
  $tekst = preg_replace("#\[scroll\](.*?)\[/scroll\]#si",'\\1',$tekst);
  $tekst = preg_replace("#\[mod\](.*?)\[/mod\]#si",'[mod]',$tekst);

return($tekst);
}

@ mysql_connect($dbhost, $dbuser, $dbpasswd);
mysql_select_db($dbname);

$query = mysql_query("SELECT
{$table_prefix}users.username as 'user',
{$table_prefix}users.user_id as 'uid',
{$table_prefix}topics.topic_title as 'title',
{$table_prefix}posts.post_id as 'pid',
{$table_prefix}posts_text.post_text as 'text',
{$table_prefix}posts.post_time as 'time',
{$table_prefix}forums.forum_name as 'cat',
{$table_prefix}posts_text.bbcode_uid as 'bbcode_uid'
FROM `{$table_prefix}posts`
LEFT JOIN {$table_prefix}topics ON {$table_prefix}topics.topic_id = {$table_prefix}posts.topic_id
LEFT JOIN {$table_prefix}posts_text ON {$table_prefix}posts_text.post_id = {$table_prefix}posts.post_id
LEFT JOIN {$table_prefix}users ON {$table_prefix}posts.poster_id = {$table_prefix}users.user_id
LEFT JOIN {$table_prefix}forums ON {$table_prefix}forums.forum_id = {$table_prefix}topics.forum_id
WHERE {$table_prefix}forums.auth_read <= $allow AND {$table_prefix}topics.forum_id != $ignore
ORDER BY `time` DESC LIMIT 0,$limit");

if(mysql_num_rows($query) < 1) die("Brak postów na forum.");

echo('<?xml version="1.0" encoding="iso-8859-2" ?>');
?>
<!-- RSSmod v0.7 by uki_uki1 for phpbb by przemo -->
<rss version="2.0">
<channel>
<generator>RSSmod v0.2 for phpbb by przemo</generator>
  <title><? echo $title; ?></title>
  <link><? echo $url; ?></link>
  <description><![CDATA[<? echo $description; ?>]]></description>
  <language>pl</language>
<?php

while($r = mysql_fetch_array($query))
{
$date = date("Y-m-d H:i:s",$r[time]);
$txt = bbcode($r[text],$r[bbcode_uid]);
echo("<item>
  <title>$r[title]</title>
  <link>$url/viewtopic.php?p=$r[pid]#$r[pid]</link>
  <pubDate>$date</pubDate>
  <description><![CDATA[<h4>Użytkownik <a href='$url/profile.php?mode=viewprofile&u=$r[uid]'>$r[user]</a><br />
  odpowiedział w temacie: <a href='$url/viewtopic.php?p=$r[pid]#$r[pid]'>$r[title]</a><br />
  <small>$date</small></h4>
  <p><b>Tre¶ć posta:</b></p><hr />
  <p>$txt</p>]]></description>
  <category>".htmlspecialchars($r[cat])."</category>
  <author>".htmlspecialchars($r[user])."</author>
</item>\n");
}
?>
</channel></rss>


I chciałbym żeby w 10 linijce:
Kod
$ignore = 0; // forum ¶mietnik które ma nie być brane pod uwagę 0 je¶li brak

wstawić kilka for. Jeśli wpisze id for po przecinku np tak:
Kod
$ignore = 1,5,19;

to wyskakuje mi taki błąd:
Kod
Parse error: syntax error, unexpected ',' in /home/xxx/public_html/rss2.php on line 10


Bardzo prosiłbym o pomoc ponieważ jest mi to dość bardzo potrzebne gdyż chciałbym wykluczyć z rrs kilka for.
Kocurro
Witaj,

po pierwsze używaj bbcode. A po drugie oto kod po odpowiednich modyfikacjach:

  1. <?php
  2.  
  3. // RSSmod for phpbb by przemo
  4. // ver. 0.7
  5. // by uki_uki1
  6.  
  7. header('Content-type: application/rss+xml; Charset: iso-8859-2;');
  8. require_once('config.php');
  9.  
  10. $ignore = array( 1,5,19 ); // forum mietnik które ma nie być brane pod uwagę 0 jeli brak
  11. $allow = 1;
  12. // umożliwa wybranie jakie wiadomoci będą dostępne
  13. // 0 tylko z for widocznych dla goci
  14. // 1 z widocznych dla goci i zarejestrowanych
  15. // można ustawić więcej ale jest to niezalecane (pokaże z dostępnych modom (2) i (4) adminom oraz (3) prywatnych)
  16.  
  17. $limit = 50; // ile ostatnich postów ma być w kanale
  18. $title = "RSS: Forum xxx"; // tytuł kanału
  19. $description = "RSS: Forum xxx"; // opis kanału
  20. $url = "http://xxx"; // adres url bez ukonika na końcu
  21.  
  22. function bbcode($tekst,$uid){
  23. str_replace($uid, "", $tekst);
  24. $tekst = nl2br($tekst);
  25. $tekst = preg_replace("#\[b\](.*?)\[/b\]#si",'<b>\\1</b>',$tekst);
  26. $tekst = preg_replace("#\[i\](.*?)\[/i\]#si",'<i>\\1</i>',$tekst);
  27. $tekst = preg_replace("#\[u\](.*?)\[/u\]#si",'<u>\\1</u>',$tekst);
  28. $tekst = preg_replace("#\[s\](.*?)\[/s\]#si",'<s>\\1</s>',$tekst);
  29.  
  30. //odnonik www
  31. $tekst = preg_replace("#\[url\](http.*?)\[/url\]#si", "<A HREF=\"\\1\" TARGET=\"_blank\">\\1</A>", $tekst);
  32. $tekst = preg_replace("#\[url=(http.*?)\](.*?)\[/url\]#si", "<A HREF=\"\\1\" TARGET=\"_blank\">\\2</A>", $tekst);
  33.  
  34. // cytat
  35. $tekst = preg_replace("#\[quote\](.*?)\[/quote\]#si",'<blockquote>\\1</blockquote>',$tekst); //bez
  36. $tekst = preg_replace("#\[quote=(.*?)\](.*?)\[/quote\]#si",'<p><cite>\\1</cite> napisał:</p><blockquote>\\2</blockquote>',$tekst); // z
  37.  
  38. //kod
  39. $tekst = preg_replace("#\[code:1\](.*?)\[/code:1\]#si",'<blockquote>\\1</blockquote>',$tekst);
  40. $tekst = preg_replace("#\[code\](.*?)\[/code\]#si",'<blockquote>\\1</blockquote>',$tekst);
  41.  
  42. //center
  43. $tekst = preg_replace("#\[center\](.*?)\[/center\]#si",'<center>\\1</center>',$tekst);
  44.  
  45. //img
  46. $tekst = preg_replace("#\[img\](.*?)\[/img\]#si",'<a href="\\1">[obrazek]</a>',$tekst);
  47.  
  48. //size
  49. $tekst = preg_replace("#\[size=(.*?)\](.*?)\[/size\]#si",'<font size="\\1">\\2</font>',$tekst);
  50.  
  51. //color
  52. $tekst = preg_replace("#\[color=(.*?)\](.*?)\[/color\]#si",'<font color="\\1">\\2</font>',$tekst);
  53.  
  54. //lista
  55. $tekst = preg_replace("#\[list\](.*?)\[/list:u\]#si",'<p>[lista]<br />\\1[/]</p>',$tekst);
  56.  
  57. //zbedne
  58. $tekst = preg_replace("#\[shadow=(.*?)\](.*?)\[/shadow\]#si",'\\2',$tekst);
  59. $tekst = preg_replace("#\[hidden\](.*?)\[/hidden\]#si",'[ukryte]',$tekst);
  60. $tekst = preg_replace("#\[fade\](.*?)\[/fade\]#si",'\\1',$tekst);
  61. $tekst = preg_replace("#\[scroll\](.*?)\[/scroll\]#si",'\\1',$tekst);
  62. $tekst = preg_replace("#\[mod\](.*?)\[/mod\]#si",'[mod]',$tekst);
  63.  
  64. return($tekst);
  65. }
  66.  
  67. @ mysql_connect($dbhost, $dbuser, $dbpasswd);
  68. mysql_select_db($dbname);
  69.  
  70. $query = mysql_query("SELECT
  71. {$table_prefix}users.username as 'user',
  72. {$table_prefix}users.user_id as 'uid',
  73. {$table_prefix}topics.topic_title as 'title',
  74. {$table_prefix}posts.post_id as 'pid',
  75. {$table_prefix}posts_text.post_text as 'text',
  76. {$table_prefix}posts.post_time as 'time',
  77. {$table_prefix}forums.forum_name as 'cat',
  78. {$table_prefix}posts_text.bbcode_uid as 'bbcode_uid'
  79. FROM `{$table_prefix}posts`
  80. LEFT JOIN {$table_prefix}topics ON {$table_prefix}topics.topic_id = {$table_prefix}posts.topic_id
  81. LEFT JOIN {$table_prefix}posts_text ON {$table_prefix}posts_text.post_id = {$table_prefix}posts.post_id
  82. LEFT JOIN {$table_prefix}users ON {$table_prefix}posts.poster_id = {$table_prefix}users.user_id
  83. LEFT JOIN {$table_prefix}forums ON {$table_prefix}forums.forum_id = {$table_prefix}topics.forum_id
  84. WHERE {$table_prefix}forums.auth_read <= $allow AND {$table_prefix}topics.forum_id NOT IN ( " . implode( ",", $ignore ) . " )
  85. ORDER BY `time` DESC LIMIT 0,$limit");
  86.  
  87. if(mysql_num_rows($query) < 1) die("Brak postów na forum.");
  88.  
  89. echo('<?xml version="1.0" encoding="iso-8859-2" ?>');
  90. ?>
  91. <!-- RSSmod v0.7 by uki_uki1 for phpbb by przemo -->
  92. <rss version="2.0">
  93. <channel>
  94. <generator>RSSmod v0.2 for phpbb by przemo</generator>
  95. <title><? echo $title; ?></title>
  96. <link><? echo $url; ?></link>
  97. <description><![CDATA[<? echo $description; ?>]]></description>
  98. <language>pl</language>
  99. <?php
  100.  
  101. while($r = mysql_fetch_array($query))
  102. {
  103. $date = date("Y-m-d H:i:s",$r[time]);
  104. $txt = bbcode($r[text],$r[bbcode_uid]);
  105. echo("<item>
  106. <title>$r[title]</title>
  107. <link>$url/viewtopic.php?p=$r[pid]#$r[pid]</link>
  108. <pubDate>$date</pubDate>
  109. <description><![CDATA[<h4>Użytkownik <a href='$url/profile.php?mode=viewprofile&u=$r[uid]'>$r[user]</a><br />
  110. odpowiedział w temacie: <a href='$url/viewtopic.php?p=$r[pid]#$r[pid]'>$r[title]</a><br />
  111. <small>$date</small></h4>
  112. <p><b>Treć posta:</b></p><hr />
  113. <p>$txt</p>]]></description>
  114. <category>".htmlspecialchars($r[cat])."</category>
  115. <author>".htmlspecialchars($r[user])."</author>
  116. </item>\n");
  117. }
  118. ?>
  119. </channel></rss>


To taka modyfikacja na szybko - nie wiem czy jest dobrze. Musiałbyś sprawdzić.

Pozdrawiam serdecznie,
Łukasz
Grzesiek90
Kocurro to bedzię dobre tylko jeszcze jedna rzecz. Teraz wyskoczyło mi takie coś:

Wydaje mi się że to coś z polskimi znakami. Wiesz jak to poprawićquestionmark.gif

A i jeszcze coś z datą jest nie tak. Tzn pokazuje 6 godzin to tyłu. Jak post był napisany o 12.46 to pokazuje że o 06.46.

Proszę pomożcie bo to ważne bardzo.
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.