Aus WCF News auslesen und ausgeben

Madd Eye
Hey Leute,

könnte mir mal bitte jemand helfen aus der WCF Datenbank einen Post auzulesen und dann wieder woanders auszugeben (Ist für ne News seite)
möchte das in der richtigen reihenfolge immer der erste Post eines Thread im bereich NEWS (in meinem Forum) augegeben wird

mein bisherige Code:
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:
<?php
include_once('./sites/error.php');

$con = @mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die(geterror(1));

@mysql_select_db('opaw@1-wcf', $con) or die(geterror(1));


//ThreadID checken

$sql = "SELECT * FROM wbb1_1_thread WHERE boardID = '43'";     // 9 = News
                
$result = mysql_query($sql) or die(geterror(1));

echo mysql_error();

while ($threadID = mysql_fetch_array($result))
{
  //Message Filtern
  //echo $threadID['threadID']."  "; 
  $id = $threadID['threadID'];   
  $sql2 = "SELECT * FROM `wbb1_1_post` WHERE threadID = '".$id."' ORDER BY threadID DESC, postID DESC limit 0,1";
                  
  $message = mysql_query($sql2) or die(geterror(1));
  echo mysql_error();

  
    while ($news = mysql_fetch_array($message))
    {
      echo$news['message']."<br>";
    
    }
}
mysql_close($con);


?>


Das Problem es wird jeder Post angezeigt und in der Falschen reihenfolge

Danke schonmal für die Hilfe
Dizzy.w3
Hi,

ich hab vor langer Zeit fuer das wBB3 folgendes Newsscript geschrieben, es soll Beitraege auslesen.

Leider verstehe ich deinen Wunsch nicht ganz, zumindest denke ich es.

Mein Script liest den 1. Post aus allen Threads einer bestimmten Kategorie aus.

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:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
<html>
<head>
<title>Newsscript</title>
<style type="text/css">
<!--
.codDiv
{
    text-align:left;
    border:1px solid black;
    font-size:12px;
    color:green;
    background-color:#ececec;
    padding:5px;
}

.quoteDiv
{
    text-align:left;
    border:1px solid black;
    font-size:12px;
    color:blue;
    background-color:#ececec;
    padding:5px;
}

.global
{
    border: solid 1px black;
    margin: 10px;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size:10px;
}

.content
{
    background-color: #527AAE;
    padding: 5px;
}

.message
{
    background-color: #C1E7EC;
    padding: 5px;
}

.footer
{
    background-color: #527AAE;
    padding: 5px;
}
-->
</style>
</head>
<body bgcolor="#C1E7EC">
<?php
function bbcode_parse($text)
{
    $text = preg_replace("/\[img\](.*?)\[\/img\]/si", '<img src="\\1" border="0" />', $text);
    $text = preg_replace("/\[url\](.*?)\[\/url\]/si", '<a href="\\1">\\1</a>', $text);
    $text = preg_replace("/\[url=\'(.*?)\'\](.*?)\[\/url\]/si", '<a href="\\1">\\2</a>', $text);
    $text = preg_replace("/\[url=(.*?)\](.*?)\[\/url\]/si", '<a href="\\1">\\2</a>', $text);
    $text = preg_replace("/\[align=(.*?)\](.*?)\[\/align\]/si", '<span style="text-align:\\1">\\2</span>', $text);
    $text = preg_replace("/\[email\](.*?)\[\/email\]/si", '<a href="mailto:\\1">\\1</a>', $text);
    $text = preg_replace("/\[code\](.*?)\[\/code\]/si", 'Code:<div class="codeDiv">\\1</div>', $text);
    $text = preg_replace("/\[quote\](.*?)\[\/quote\]/si", 'Zitat:<div class="quoteDiv">\\1</div>', $text);
    $text = preg_replace('/\[(\/?)(b|i|u|li|ul|ol)\]/i', '<$1$2>', $text);
    $text = preg_replace('/^(={1,6})\s*(.+)\s*(\1)\s*$/me', '\'<h\'.strlen(\'$1\').\'>\'.rtrim(\'$2\').\'</h\'.strlen(\'$1\').\'>\'', $text);
    
    return nl2br($text);
}

$host = 'localhost'; // Adresse des MySQL-Servers, meistens localhost
$username = 'user'; // MySQL-Benutzer ... Besitzer der Datenbank, bei lokalen Installationen meist root
$dbname = 'wbb3'; // Name der Datenbank
$passwd = 'passwd'; // Passwort des MySQL-Benutzers
$url2profile = 'http://board.dizzy-w3.at/index.php?page=User&userID=';
$url2thread = 'http://board.dizzy-w3.at/index.php?page=Thread&threadID=';
$boardID = 35;

@$db = new mysqli($host, $username, $passwd, $dbname);
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = 'SELECT wbb1_1_thread.time, wbb1_1_post.username, wbb1_1_thread.threadID, wbb1_1_thread.isDeleted, wbb1_1_thread.replies, wbb1_1_post.subject, wbb1_1_post.message, wbb1_1_post.time, wbb1_1_thread.userID, wbb1_1_thread.views
FROM wbb1_1_post, wbb1_1_thread
WHERE wbb1_1_post.postID = wbb1_1_thread.firstPostID
AND wbb1_1_thread.boardID = '.$boardID.'
AND wbb1_1_thread.isDeleted = 0
ORDER BY wbb1_1_thread.time DESC 
LIMIT 0 , 30';

$res = $db->query($query);
$num_res = $res->num_rows;
for($i = 0; $i < $num_res; $i++)
{
    $row = $res->fetch_assoc();
    echo '<div class="global"><div class="content">
    <span style="margin-left: 20px;"><b><a href="'.$url2thread.stripslashes($row['threadID']).'">'.stripslashes($row['subject']).'</a></b> von <a href="'.$url2profile.stripslashes($row['userID']).'">'
    .stripslashes($row['username']).'</a> am '. date('d m Y', $row['time']) .' um '. date('H:i', $row['time']) .'</span></div>';
    echo '<div class="message"><p>'.bbcode_parse(stripslashes($row['message'])).'</p><br /><br /></div>
    <div class="footer">Views: '.stripslashes($row['views']).' | Antworten: ' . stripslashes($row['replies']) . '</div></div>';
}
$res->close();
$db->close();
?>
</body>
</html>


Du kannst es ja mal ausprobieren, so weit ich weiss funktioniert es, Kleinigkeiten kannst du ja bestimmt selbst anpassen.

Edit: Tag nicht geschlossen Müde
Madd Eye
Du hast mich voll verstanden ^^

Ich Danke dir der Code funktioniert einwandfrei

Muss eben doch noch an meinem PHP feilen xD

Edit:
Könnte mir vllt noch jemand sagen wie man die BBcode Funktion vom Wbb einbaut?
Dizzy.w3
Hi,

BBCodes werden bereits geparst, siehe Funktion bbcode_parse. Gibts beim Parsen Probleme?
Madd Eye
Direkt nicht aber es werden eben nicht alle abegedeckt

Das ist das problem da bei mir die News schreiben sehr gerne sehr viele BBCode benutzen xD
Dizzy.w3
Zeig mir mal bitte den Code von so nem Newsbeitrag und den Screenshot vom mit dem Script geparsten Post.
Hawkes
Warum nicht einfach das WCF/WBB requiren und dann das ganze Spielchen veranstalten?

Hatte dafür auch mal nen Codeschnippsel.
Madd Eye
Ok hier mal der SCreen

den Codeschnipsel such ich mal

Danke ^^

Edit:
Hab was in der Art gefunden funktionier nur nicht xD
php:
1:
2:
3:
4:
require_once(WCF_DIR.'lib/data/message/bbcode/MessageParser.class.php');
        $parser = MessageParser::getInstance();
        $parser->setOutputType('text/html');
        $text = $parser->parse($text, true, false, true, false);


Das klappt ohne Problem wenn ich oben drüber schreib:
php:
1:
define('WCF_DIR', dirname('../forum/wcf/').'/');


Nur dann kommt dieser Fehler:
code:
1:
2:
3:
Warning: require_once(./global.php) [function.require-once]: failed to open stream: No such file or directory in /***/forum/index.php on line 7

Fatal error: require_once() [function.require]: Failed opening required './global.php' (include_path='.:/usr/lib/php') in /***/forum/index.php on line 7
Madd Eye
Kann mir da wirklich keienr helfen?

Hab den code bisher ein wenig geändert:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
require_once('../forum/global.php');
require_once('../forum/index.php');


define('RELATIVE_WBB_DIR', '../forum/');
define('WCF_DIR', dirname('../forum/wcf/').'/');
require_once(WCF_DIR.'lib/data/message/bbcode/MessageParser.class.php');

function bbcode_parse($text){


        $parser = MessageParser::getInstance();
        $parser->setOutputType('text/html');
        $text = $parser->parse($text, true, false, true, false);

return nl2br($text);
}
rambule
Zitat:
Original von Dizzy.w3
so weit ich weiss funktioniert es


mhm bei mir läufts nicht traurig Daten sind Richtig eingegben aber irgendwie bekomm ich nen Fehler


code:
1:
Fatal error: Call to a member function close() on a non-object in /home/www/web305/html/memorandum/forum/memo_news.php on line 105 


jemand ne idee was ich tuen kann ?^^
Dizzy.w3
Ich denke mal, dass die Daten falsch sind.

Probiers damit:

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:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
<html>
<head>
<title>Newsscript</title>
<style type="text/css">
<!--
.codDiv
{
    text-align:left;
    border:1px solid black;
    font-size:12px;
    color:green;
    background-color:#ececec;
    padding:5px;
}

.quoteDiv
{
    text-align:left;
    border:1px solid black;
    font-size:12px;
    color:blue;
    background-color:#ececec;
    padding:5px;
}

.global
{
    border: solid 1px black;
    margin: 10px;
    font-family: Verdana,Arial,Helvetica,sans-serif;
    font-size:10px;
}

.content
{
    background-color: #527AAE;
    padding: 5px;
}

.message
{
    background-color: #C1E7EC;
    padding: 5px;
}

.footer
{
    background-color: #527AAE;
    padding: 5px;
}
-->
</style>
</head>
<body bgcolor="#C1E7EC">
<?php
function bbcode_parse($text)
{
    $text = preg_replace("/\[img\](.*?)\[\/img\]/si", '<img src="\\1" border="0" />', $text);
    $text = preg_replace("/\[url\](.*?)\[\/url\]/si", '<a href="\\1">\\1</a>', $text);
    $text = preg_replace("/\[url=\'(.*?)\'\](.*?)\[\/url\]/si", '<a href="\\1">\\2</a>', $text);
    $text = preg_replace("/\[url=(.*?)\](.*?)\[\/url\]/si", '<a href="\\1">\\2</a>', $text);
    $text = preg_replace("/\[align=(.*?)\](.*?)\[\/align\]/si", '<span style="text-align:\\1">\\2</span>', $text);
    $text = preg_replace("/\[email\](.*?)\[\/email\]/si", '<a href="mailto:\\1">\\1</a>', $text);
    $text = preg_replace("/\[code\](.*?)\[\/code\]/si", 'Code:<div class="codeDiv">\\1</div>', $text);
    $text = preg_replace("/\[quote\](.*?)\[\/quote\]/si", 'Zitat:<div class="quoteDiv">\\1</div>', $text);
    $text = preg_replace('/\[(\/?)(b|i|u|li|ul|ol)\]/i', '<$1$2>', $text);
    $text = preg_replace('/^(={1,6})\s*(.+)\s*(\1)\s*$/me', '\'<h\'.strlen(\'$1\').\'>\'.rtrim(\'$2\').\'</h\'.strlen(\'$1\').\'>\'', $text);
    
    return nl2br($text);
}

$host = 'localhost'; // Adresse des MySQL-Servers, meistens localhost
$username = 'user'; // MySQL-Benutzer ... Besitzer der Datenbank, bei lokalen Installationen meist root
$dbname = 'wbb3'; // Name der Datenbank
$passwd = 'passwd'; // Passwort des MySQL-Benutzers
$url2profile = 'http://board.dizzy-w3.at/index.php?page=User&userID=';
$url2thread = 'http://board.dizzy-w3.at/index.php?page=Thread&threadID=';
$boardID = 35;

@$db = new mysqli($host, $username, $passwd, $dbname);
if ($mysqli->connect_error) {
    die('Connect Error: ' . $mysqli->connect_error);
}

$query = 'SELECT wbb1_1_thread.time, wbb1_1_post.username, wbb1_1_thread.threadID, wbb1_1_thread.isDeleted, wbb1_1_thread.replies, wbb1_1_post.subject, wbb1_1_post.message, wbb1_1_post.time, wbb1_1_thread.userID, wbb1_1_thread.views
FROM wbb1_1_post, wbb1_1_thread
WHERE wbb1_1_post.postID = wbb1_1_thread.firstPostID
AND wbb1_1_thread.boardID = '.$boardID.'
AND wbb1_1_thread.isDeleted = 0
ORDER BY wbb1_1_thread.time DESC 
LIMIT 0 , 30';

$res = $db->query($query);
$num_res = $res->num_rows;
for($i = 0; $i < $num_res; $i++)
{
    $row = $res->fetch_assoc();
    echo '<div class="global"><div class="content">
    <span style="margin-left: 20px;"><b><a href="'.$url2thread.stripslashes($row['threadID']).'">'.stripslashes($row['subject']).'</a></b> von <a href="'.$url2profile.stripslashes($row['userID']).'">'
    .stripslashes($row['username']).'</a> am '. date('d m Y', $row['time']) .' um '. date('H:i', $row['time']) .'</span></div>';
    echo '<div class="message"><p>'.bbcode_parse(stripslashes($row['message'])).'</p><br /><br /></div>
    <div class="footer">Views: '.stripslashes($row['views']).' | Antworten: ' . stripslashes($row['replies']) . '</div></div>';
}
$res->close();
$db->close();
?>
</body>
</html>
Madd Eye
Hey Dizzy

weißt du zufällig auch was bei mir falsch läuft?
Bekomms einfach nicht hin und bis ich die 30 BBCodes richtig eingefügt habe bin ich steinalt xD
GneX
Wie Hawkes schon geschrieben hat: Wenn wir das WCF/WBB zur Verfügung haben, würde ich dies Grundsätzlich auch nutzen.

Ein Beispiel:
php:
1:
2:
3:
4:
5:
6:
7:
8:
require_once('./global.php');
require_once(WCF_DIR.'lib/data/message/bbcode/MessageParser.class.php');

  public function parseBBCode($message, $enableSmilies = true, $enableHtml = true, $enableBBCodes = true, $doKeywordHighlighting = false) {
    $parser = MessageParser::getInstance();
    $parser->setOutputType('text/html');
    return $parser->parse($message, $enableSmilies, $enableHtml, $enableBBCodes, $doKeywordHighlighting);
  }
Madd Eye
Ja weiß ich nur kommt bei deinem Code folgendes:

Zitat:
Fatal error: PHP warning in file /data/multiserv/users/174622/projects/204773/www/forum/wcf/lib/util/HeaderU
til.class.php (15): Cannot modify header information - headers already sent by (output started at /data/multiserv/users/****/projects/****/www/HP/index.php:13)
GneX
Irgendetwas anderes vor "<?php" stehen? Sei es ein Leerzeichen, o.Ä.
Madd Eye
Nein.
Kann auch nicht daran liegen das ich es include den das hab ich auch schon augeschlossen
GneX
Du sendest aber irgendwo einen Header, was dem WCF nicht gefällt.
Dizzy.w3
Wie sieht deine HP/index.php aus? Haeng die mal an.
Madd Eye
habs hinbekommen xD
ich musste die leerzeiche vor request_once entfernen