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($texttruefalsetruefalse);


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($texttruefalsetruefalse);

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