News mit phpBB realisieren
-
- Mitglied
- Beiträge: 26
- Registriert: 13.10.2005 16:26
- Wohnort: Altdorf b. Nürnberg
- Kontaktdaten:
News mit phpBB realisieren
Hallo zusammen,
ich arbeite im Moment an einer Seite, und möchte die News auf der Startseite über das phpBB realisieren, also es soll ein Forum geben, wo dann jeder Thread eine neue News ist. Aber irgendwie verzweifel ich echt an der MySQL Abfrage, weil die phpBB Datenbank ja die Struktur hat, das jeder Post ne ID bekommt, und dann in ner zweiten Tabelle der PostID ne ForumsID zugewiesen wird.
Könnt ihr mir sagen wie ich die Abfrage hinbekomme?
Das wär echt klasse!
Danke für eure Antworten!
ich arbeite im Moment an einer Seite, und möchte die News auf der Startseite über das phpBB realisieren, also es soll ein Forum geben, wo dann jeder Thread eine neue News ist. Aber irgendwie verzweifel ich echt an der MySQL Abfrage, weil die phpBB Datenbank ja die Struktur hat, das jeder Post ne ID bekommt, und dann in ner zweiten Tabelle der PostID ne ForumsID zugewiesen wird.
Könnt ihr mir sagen wie ich die Abfrage hinbekomme?
Das wär echt klasse!
Danke für eure Antworten!
Code: Alles auswählen
$sql = 'SELECT
t.topic_id,
t.topic_time,
t.topic_title,
pt.post_text,
u.username,
u.user_id,
t.topic_replies,
pt.bbcode_uid,
t.forum_id,
t.topic_poster,
t.topic_first_post_id,
t.topic_status,
pt.post_id,
p.post_id,
p.enable_smilies
FROM
' . TOPICS_TABLE . ' AS t,
' . USERS_TABLE . ' AS u,
' . POSTS_TEXT_TABLE . ' AS pt,
' . POSTS_TABLE . ' AS p
WHERE
t.forum_id IN (' . >>> HIER FOREN_ID EINTRAGEN <<< . ') AND
t.topic_time <= ' . time() . ' AND
t.topic_poster = u.user_id AND
t.topic_first_post_id = pt.post_id AND
t.topic_first_post_id = p.post_id AND
t.topic_status <> 2
ORDER BY
t.topic_time DESC';

ezPortal von SmartorpReya hat geschrieben:Hast du das jetz grad geschrieben, oder hast du schonmal so ein Mod o.Ä geschrieben?

die fetchpost.php
hier mal die function dafür:
Code: Alles auswählen
function phpbb_fetch_posts($forum_sql, $number_of_posts, $text_length)
{
global $db, $board_config;
$sql = 'SELECT
t.topic_id,
t.topic_time,
t.topic_title,
pt.post_text,
u.username,
u.user_id,
t.topic_replies,
pt.bbcode_uid,
t.forum_id,
t.topic_poster,
t.topic_first_post_id,
t.topic_status,
pt.post_id,
p.post_id,
p.enable_smilies
FROM
' . TOPICS_TABLE . ' AS t,
' . USERS_TABLE . ' AS u,
' . POSTS_TEXT_TABLE . ' AS pt,
' . POSTS_TABLE . ' AS p
WHERE
t.forum_id IN (' . $forum_sql . ') AND
t.topic_time <= ' . time() . ' AND
t.topic_poster = u.user_id AND
t.topic_first_post_id = pt.post_id AND
t.topic_first_post_id = p.post_id AND
t.topic_status <> 2
ORDER BY
t.topic_time DESC';
if ($number_of_posts != 0)
{
$sql .= '
LIMIT
0,' . $number_of_posts;
}
//
// query the database
//
if(!($result = $db->sql_query($sql)))
{
message_die(GENERAL_ERROR, 'Could not query announcements information', '', __LINE__, __FILE__, $sql);
}
//
// fetch all postings
//
$posts = array();
if ($row = $db->sql_fetchrow($result))
{
$i = 0;
do
{
$posts[$i]['bbcode_uid'] = $row['bbcode_uid'];
$posts[$i]['enable_smilies'] = $row['enable_smilies'];
$posts[$i]['post_text'] = $row['post_text'];
$posts[$i]['topic_id'] = $row['topic_id'];
$posts[$i]['topic_replies'] = $row['topic_replies'];
$posts[$i]['topic_time'] = create_date($board_config['default_dateformat'], $row['topic_time'], $board_config['board_timezone']);
$posts[$i]['topic_title'] = $row['topic_title'];
$posts[$i]['user_id'] = $row['user_id'];
$posts[$i]['username'] = $row['username'];
//
// do a little magic
// note: part of this comes from mds' news script and some additional magics from Smartor
//
stripslashes($posts[$i]['post_text']);
if (($text_length == 0) or (strlen($posts[$i]['post_text']) <= $text_length))
{
$posts[$i]['post_text'] = bbencode_second_pass($posts[$i]['post_text'], $posts[$i]['bbcode_uid']);
$posts[$i]['striped'] = 0;
}
else // strip text for news
{
$posts[$i]['post_text'] = bbencode_strip($posts[$i]['post_text'], $posts[$i]['bbcode_uid']);
$posts[$i]['post_text'] = substr($posts[$i]['post_text'], 0, $text_length) . '...';
$posts[$i]['striped'] = 1;
}
//
// Smilies
//
if ($posts[$i]['enable_smilies'] == 1)
{
$posts[$i]['post_text'] = smilies_pass($posts[$i]['post_text']);
}
$posts[$i]['post_text'] = make_clickable($posts[$i]['post_text']);
//
// define censored word matches
//
$orig_word = array();
$replacement_word = array();
obtain_word_list($orig_word, $replacement_word);
//
// censor text and title
//
if (count($orig_word))
{
$posts[$i]['topic_title'] = preg_replace($orig_word, $replacement_word, $posts[$i]['topic_title']);
$posts[$i]['post_text'] = preg_replace($orig_word, $replacement_word, $posts[$i]['post_text']);
}
$posts[$i]['post_text'] = nl2br($posts[$i]['post_text']);
$i++;
}
while ($row = $db->sql_fetchrow($result));
}
//
// return the result
//
return $posts;
} // phpbb_fetch_posts
-
- Mitglied
- Beiträge: 26
- Registriert: 13.10.2005 16:26
- Wohnort: Altdorf b. Nürnberg
- Kontaktdaten:
Hmm, also irgendwie komm ich mit dem Code auch nicht wirklich weiter!
Kann mir vllt. jemand den Code geben um nur den Threadtitel, Datum&Uhrzeit, Verfasser, und Inhalt auszugeben. Und vorallem die dann auch wieder ausgeben zu lassen?
Beschäftige mich jetz erst seit ca. 2 Wochen mit PHP, also verzeiht bitte meine Unwissenheit!
Kann mir vllt. jemand den Code geben um nur den Threadtitel, Datum&Uhrzeit, Verfasser, und Inhalt auszugeben. Und vorallem die dann auch wieder ausgeben zu lassen?
Beschäftige mich jetz erst seit ca. 2 Wochen mit PHP, also verzeiht bitte meine Unwissenheit!
UPDATE
Hio ich hab da auch schon meine Probleme mit gehabt und bin schließlich zu dieser Lösung gekommen:
also du musst diesen Code in einer PHP Datei speichern
Dann brauchst du noch die Datei news.tpl mit folgendem Inhalt
Wenn du jetz deine php Datei aufrufst, bekommst du eine Tabelle mit:
Datum/Zeit | <a href="Zeigt den Inhalt der Neuigkeit im Forum">Newsüberschrift</a> | Autor | Inhalt
Ich weiß der Code ist wirklich nicht das gelbe vom Ei, aber er sollte funktionieren
Edit: Demo gibts unter http://www.nilzos.bolwerk.de/wbtg/ oben im Menue
(nur ohne den Inhalt, da das das Design nen bisschen sprengen würde
)
Edit: Meine güte war der Code verbuggt, ich hab ihn mal geändeert und jetz laüft er
Hio ich hab da auch schon meine Probleme mit gehabt und bin schließlich zu dieser Lösung gekommen:
also du musst diesen Code in einer PHP Datei speichern
Code: Alles auswählen
<?php
/***************************************************************************
* news2.php
* -------------------
* begin : Saturday, Feb 13, 2001
* copyright : (C) 2001 The phpBB Group
* email : support@phpbb.com
*
* $Id: index.php,v 1.99.2.3 2004/07/11 16:46:15 acydburn Exp $
*
*
***************************************************************************/
/***************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
***************************************************************************/
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
//
// End session management
//
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
$template->set_filenames(array(
'body' => 'test.tpl')
);
$sql = "SELECT
topic_id,
topic_title,
topic_poster,
topic_time
FROM
topics
WHERE
forum_id = '13'
ORDER BY
topic_time DESC
LIMIT
0,4
";
$newsquery = mysql_query($sql);
while($row = mysql_fetch_object($newsquery))
{
// BEGIN usernamen finden
$query = "SELECT username, user_id FROM users WHERE user_id = '".$row->topic_poster."'";
$query = mysql_query($query);
while($row2 = mysql_fetch_object($query))
{
$poster = $row2->username;
}
// END username finden
// BEGIN Inhalt finden
$query = "SELECT post_id FROM posts WHERE topic_id = '".$row->topic_id."' ORDER BY post_time LIMIT 1";
$query = mysql_query($query);
while($row2 = mysql_fetch_object($query))
{
// BEGIN PostID zu Inhalt umwandeln
$query2 = "SELECT * FROM posts_text WHERE post_id = '".$row2->post_id."'";
$query2 = mysql_query($query2);
while($row3 = mysql_fetch_object($query2))
{
$inhalt = $row3->post_text;
}
// END PostID zu Inhalt umwandeln
}
// END Inhalt finden
$template->assign_block_vars('news2', array(
'NDATUM' => date("d.m.y H:i", $row->topic_time),
'NEWS' => "<a href=\"viewtopic.php?t=".$row->topic_id."\">".$row->topic_title."</a>",
'AUTOR' => $poster,
'INHALT' => $inhalt
));
}
//
// Generate the page
//
$template->pparse('body');
include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
?>
Code: Alles auswählen
<table border="1">
<!-- BEGIN news2 -->
<tr>
<td >
{news2.NDATUM} <!-- Zeit / Datum -->
</td>
<td>
{news2.NEWS} <!-- Ueberschrift -->
</td>
<td>
{news2.AUTOR} <!-- Autor -->
</td>
</tr>
<tr>
<td colspan="3">{news2.INHALT}</td>
</tr>
<!-- END news2 -->
</table>
Datum/Zeit | <a href="Zeigt den Inhalt der Neuigkeit im Forum">Newsüberschrift</a> | Autor | Inhalt
Ich weiß der Code ist wirklich nicht das gelbe vom Ei, aber er sollte funktionieren

Edit: Demo gibts unter http://www.nilzos.bolwerk.de/wbtg/ oben im Menue
(nur ohne den Inhalt, da das das Design nen bisschen sprengen würde

Edit: Meine güte war der Code verbuggt, ich hab ihn mal geändeert und jetz laüft er
Zuletzt geändert von V1tzl1 am 25.10.2005 13:26, insgesamt 2-mal geändert.
- Martin Truckenbrodt
- Mitglied
- Beiträge: 1143
- Registriert: 15.08.2003 23:16
- Wohnort: Südthüringen
- Kontaktdaten:
Hallo,
Alternative RSS bzw. RDF Parser, wie es hier auf phpbb.de verwendet wird.
Gruß Martin
Alternative RSS bzw. RDF Parser, wie es hier auf phpbb.de verwendet wird.
Gruß Martin
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
Habe den Code ausprobiert, bekomme aber folgende Meldung beim Aufruf der PHP-Datei:
Code: Alles auswählen
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/web/bernd/rat/projektz/index.php on line 57