HOWTO: rssfeed und rssfeed2thread v2

OptixPro
Dann Zeig mir mal deine rss.php, du hast das ganze an einer falschen stelle eingefuegt, beachte das du

php:
1:
# /make wherebit
und NICHT

php:
1:
# make wherebit
ersetzen sollst!

Und ich bin mir 99%ig sicher das du das erste "# make wherebit" und nicht das "# /make wherebit" ersetzt hast Augenzwinkern
Agi
oh da war ich wohl zu schnell Peinlich

Ok jetzt hab ich das Richtige ersetzt, nun kommt:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
SQL-DATABASE ERROR

Database error in WoltLab Burning Board (2.3.6): Invalid SQL: SELECT threadid FROM bb1_threads boardid = '17' ORDER BY starttime DESC LIMIT 0,15 
mysql error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= '17' ORDER BY starttime DESC LIMIT 0,15' at line 1 
mysql error number: 1064 
mysql version: 4.1.13 
php version: 5.1.4 
Date: 21.10.2006 @ 20:57 
Script: /rss.php?boardid=17 
Referer:



Das ist der Inhalt der Datei:

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
<?PHP
/*
 * (C) 2006 e-WebWork
 * http://www.e-webwork.de
 * kboehme@e-webwork.de
 */
require("./acp/lib/options.inc.php");
require("./acp/lib/rss.inc.php");
require("./global.php");

# make wherebit
if(!empty($rss_boardids)){
        $boardids split(","$rss_boardids);

        for($i 0$i <= count($boardids); $i++){
                if(!empty($boardids[$i]) && $rss_boardids_mode == 1$where .= " boardid = ".$boardids[$i]." OR";
                else if(!empty($boardids[$i]) && $rss_boardids_mode != 1$where .= " boardid != ".$boardids[$i]." AND";
        }
}

if(!$where$where "WHERE 1";
else $where "WHERE ".$where;

if(substr($wherestrlen($where)-22) == "OR" || substr($wherestrlen($where)-33) == "AND"$where substr($where0strlen($where)-3);

// Boardids ausgeben
if(isset($_REQUEST['boardid']) && !empty($_REQUEST['boardid'])) $where "boardid = '".$_GET['boardid']."'";

# /make wherebit 

$result $db->query("SELECT threadid FROM bb".$n."_threads ".$where." ORDER BY starttime DESC LIMIT 0,".$rss_limit."");
while($row mysql_fetch_array($result)) $threadids .= ','.$row['threadid'];

$result $db->query("SELECT DISTINCT threadid, message, allowsmilies FROM bb".$n."_posts WHERE threadid IN (0$threadids) ORDER BY posttime DESC");
while($row mysql_fetch_array($result)) $posttemp[$row['threadid']] = $row;

$result mysql_query("SELECT bb".$n."_threads.*, username, userid FROM bb".$n."_threads LEFT JOIN bb".$n."_users ON (bb".$n."_users.userid=bb".$n."_threads.starterid) WHERE threadid IN (0$threadids) ORDER BY starttime DESC");

header("Content-type: text/xml");
header("Content-Description: Automaticly generated");
print '<?xml version="1.0" encoding="ISO-8859-1"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/">

<channel>
  <title>'.$rss_name.'</title>
  <link>'.$rss_url.'</link>
  <description>'.$rss_description.'</description>
</channel>';

while($row mysql_fetch_array($result)) {
    $message preg_replace("/\[(.*?)](.*?)\[\/(.*?)\]/si","$2"$posttemp[$row['threadid']]['message']);
    $message preg_replace("/\[(.*?)\=(.*?)](.*?)\[\/(.*?)\]/si","$3"$posttemp[$row['threadid']]['message']);
    print '<item>
    <title>'.$row['topic'].'</title>
    <link>'.$url2board.'/thread.php?threadid='.$row['threadid'].'</link>
    <description>'.htmlspecialchars(substr($message0$rss_show_limit)).'...</description>
    </item>
    ';
}

print '</rdf:RDF>';
?>
OptixPro
das mit dem zuschnell sein is wohl nen allgemeines Problem traurig

php:
1:
if(isset($_REQUEST['boardid']) && !empty($_REQUEST['boardid'])) $where "boardid = '".$_GET['boardid']."'";


muss

php:
1:
if(isset($_REQUEST['boardid']) && !empty($_REQUEST['boardid'])) $where "WHERE boardid = '".$_GET['boardid']."'";


sein, sry ;P
Agi
Thx also anzeigen tut Opera jetzt

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
Fehler!
XML-Interpretation fehlgeschlagen

XML-Interpretation fehlgeschlagen: Syntaxfehler (Zeile: 56, Zeichen: 23)

Dokument als HTML neu analysieren.
Fehler:invalid start-tag
Spezifikation:http://www.w3.org/TR/REC-xml/#NT-STag
 53: weiß zufällig jemand ob Shaman King auf RTL 2 zenziert ausgestrahlt wird???...</description>
 54:     </item>
 55:     <item>
 56:     <title>Gute Laune <-> Schlechte Laune Thread</title>
 57:     <link>http://board.anime-miako.to/thread.php?threadid=21760</link>
 58:     <description>Ich hab grad einfach verdammt gute Laune 
 59: und spam hier jetzt mal 'n bisschen rum^^...</description>


Aber aufscheinen tut es trotzdem alles richtig und korrekt dann in Feedreader von Opera.

Und FireFox bringt überhaupt nur:

code:
1:
2:
3:
4:
XML-Verarbeitungsfehler: nicht wohlgeformt
Adresse: http://board.anime-miako.to/rss.php?boardid=58
Zeile Nr. 56, Spalte 24:    <title>Gute Laune <-> Schlechte Laune Thread</title>
-----------------------^


sonst gar nichts
OptixPro
code:
1:
<title>Gute Laune <-> Schlechte Laune Thread</title>

title wurde bsiher nich convertiert...

habe die rss.php im ersten Thema geandert... einfach die neue version nehmen Augenzwinkern
Agi
Zitat:
Original von OptixPro
code:
1:
<title>Gute Laune <-> Schlechte Laune Thread</title>

title wurde bsiher nich convertiert...

habe die rss.php im ersten Thema geandert... einfach die neue version nehmen Augenzwinkern


Hab ich, jetzt bekomm ich in Opera diese Fehlermeldung (siehe Anhang) und FireFox gibt mir das hier aus:

code:
1:
2:
3:
XML-Verarbeitungsfehler: Undefinierte Entität
Adresse: http://board.anime-miako.to/rss.php?boardid=10
Zeile Nr. 20, Spalte 68:        <description>Ich bin jezt seit gerade erst dabei aber ich f&auml;nde es viel geiler, wenn man einen Smalltalk f&uuml;r alle die on sind machen k&ouml;nnte... oder gibet den schon irgendwo?
OptixPro
hmm konflikt ;O ich glaub ich muss mir das rfc ma durchlesen welche zeichen as raw und welche umgewandelt werden muessen...

< und > muessen aufjedenfall ersetzt werden, habe das ganze ja bisher per wbb->htmlconverter gemacht, ... da dein Forum ja leider keine Moeglichkeit bietet sich die ausgabe anzusehen ohne sich zu reggen teste ich weiter local bei mir, wo es bsiher eigentlich ging, aber wohl auch, weil ich umlaute in titeln nicht ausschreibe bzw allgemein nicht ausschreibe -.-"

zur nur ersetze erstmal htmlconverter($row['title']) mir str_replace("<", "&gt;" str_replace(">", "&lt;", $row['title'])) wobei ich nun gerade auch nicht weiss ob gt und lt richtig sind zum ersetzen... *gg* dafuer gibts ja die converter ;D aber passt schon und wenns vertauscht wurde.. siehts halt anders aus als normal -.-

ich werd schauen was ich da noch alles machen kann... hoffe bald ne schoene, laufende loesung zu haben...
Netwarrior
gibts schon ne lösung für das Problem mit den Umlauten?
OptixPro
Zitat:
Original von Netwarrior
gibts schon ne lösung für das Problem mit den Umlauten?


keine die nicht weitere verursacht traurig
CSchulle
Servus...

vielleicht hilft Dir der Codeschnippsel:

php:
1:
2:
3:
4:
5:
6:
$topic=formatfeed($data['topic']);
 $prefix=formatfeed($data['prefix']);
 $lastposter=formatfeed($data['lastposter']);
 $lastposttime=date("d.m.Y, H.i",$data['lastposttime']);
 $threadlink="$boardurl/thread.php?postid=".intval($data['postid'])."#post".intval($data['postid']);
 $message=formatfeed($data['message']);


php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
//make the feed compatible with RSS
function formatfeed($string) {
 $pattern=array(
  "'<'",  
  "'>'",   
  "'&'",   
  "'\"'",   
  "'\''", 
  "'&Auml;'", 
  "'&auml;'", 
  "'&Ouml;'", 
  "'&ouml;'", 
  "'&Uuml;'", 
  "'&uuml;'",
  "'&szlig;'", 
  "'„|„'", 
  "'“|“'", 
  "'–|–'", 
  "'!\204|\223!'",
  "'\[[^\]]*\]'",
  "'!\15\12|\12|\15!'"
 );
 $replace=array(
  "&lt;",
  "&gt;",
  "&amp;",
  "&quot;",
  "&apos;",
  "Ä",
  "ä",
  "Ö",
  "ö",
  "Ü",
  "ü",
  "ß",
  "»",
  "«",
  "-",
  "\"",
  "",
  " "
 );
 $string preg_replace($pattern$replace$string);
 return $string;
OptixPro
hey, danke dir... atm gehts mir aber eher um imkopitabilitaeten zwischen mysql 4.1 und 3.x und vorallem der utf kodierung bzw decodierung
twinONE
frage wäre es möglich ein screenshot mall zu posten wie die themen erstellung von externen rss dateien aussieht ?
bzw.

Werden alle neuen news nur in einen thema macht oder immer bei den ausführen ein Neues Thema erstellt ?
CSchulle
1 Thema pro Ausführung pro Feed
twinONE
vielen dank, nur noch eine frage ist es auch möglich die ersten 250 Zeichen (je nach dem) der news meldungen mit posten zu lassen wenn die infos im Rss steht ?
CSchulle
das kannst Du nicht beeinflussen.

Je nach was sie anbieten...

siehe Anhang (Bsp: GOLEM)
twinONE
Vielen dank,

so nur noch eine kleinigkeit zu bemängeln bzw. vorschlag

ich fände es toll wenn mann in der rss.inc.php zum schluss bei

php:
1:
$sites[] = "http://www.rss.feed.de";


mann idealweiser selbst ein Titel (thama) bestimmen kann denn ich habe da nen Feed wo als Thema bla.Doman.de steht und dies sieht nicht besonders schön aus und ist nicht gerade aussage kräftig
Pow3r
Klappt ohne Probleme, danke smile
X-Trancer
Moins

beim rssfeed2thread klappt bis auf die umlaute alles jedoch rechnet er dem User die Beiträge nicht an

Ich habe ein User angelegt für die News aber dort rechnet es die Beiträge nicht an

Ob der User on oder off ist spielt keine rolle es rechnet die Beiträge nicht dazu
OptixPro
Zitat:
Original von X-Trancer
Moins

beim rssfeed2thread klappt bis auf die umlaute alles jedoch rechnet er dem User die Beiträge nicht an

Ich habe ein User angelegt für die News aber dort rechnet es die Beiträge nicht an

Ob der User on oder off ist spielt keine rolle es rechnet die Beiträge nicht dazu


es wird jedoch der globale und der board postcount erhoeht... die abfrage fuer den user halte ich einfach fuer ueberluessig... bei bedarf:

php:
1:
$db->unbufferd_query("UPDATE bb".$n."_users set `userposts` = userposts+1 WHERE `userid` = '".$uid."'");


muesste gehen. Habs aber nicht getestet...
X-Trancer
geht nicht

Fatal error: Call to undefined function: unbufferd_query() in

und haste auch ne lösung für die Umlaute sieht nicht gut aus so