phpbb, die aktuellsten Themen

TS-JC

Erfahrenes Mitglied
Hallo

ich wollte auf meiner Startseite die 5 aktuellsten Themen anzeigen.

Also hier mein SQL Befehl:
PHP:
SELECT * FROM db_topics INNER JOIN db_posts ON db_topics.topic_id = db_posts.topic_id GROUP BY db_topics.topic_id ORDER BY post_time DESC LIMIT 0,5

Problem dabei: So zeigt er die Sache nicht richtig an, weil durch den GROUP zwar schön nach Topic gruppiert wird, hierbei allerdings der älteste Beitrag genommen wird.
Lässt man das GROUP weg, so wird ein Topic öfter angezeigt sofern dort zb die beiden neusten Einträge drin stehen.

Hoffe ihr versteht wie ich das meine.
Angucken könnt ihr es grade mal ohne das GROUP auf http://www.echte-abzocke.de

thx4help
 
Sowas könnte funktionieren, ist allerdings nicht ganz so performant wie deine Abfrage:

SQL:
SELECT *
FROM ( SELECT * FROM db_posts ORDER BY post_time LIMIT 0,20 )
INNER JOIN db_topics ON db_posts.topic_id = db_topics.topic_id
GROUP BY db_topics.topic_id
LIMIT 0,5

Das Limit in der inneren Abfrage musst du evtl noch anpassen oder auch ganz weglassen wenn die Anzeige perfekt sein soll, keine Ahnung wieviel das kostet.
 
Da es wie ein phpBB 2 aussieht, hier mal aus meinem Portalskript.

SQL:
SELECT 
	t.topic_id, 
	t.topic_title, 
	t.topic_last_post_id, 
	t.forum_id, p.post_id, 
	p.poster_id, 
	p.post_time, 
	u.user_id, 
	u.username
FROM db_topics AS t, 
	db_posts AS p, 
	db_users AS u
WHERE t.forum_id NOT IN (" . $except_forum_id . ")
	AND t.topic_status <> 2
	AND p.post_id = t.topic_last_post_id
	AND p.poster_id = u.user_id
ORDER BY p.post_id DESC
LIMIT 0,20

$except_forum_id schließt Kategorien aus, per ForenID.

PHP:
$except_forum_id = '1, 2, 3';

So sollte die Variable aussehen. Solltest du keine Foren ausschließen wollen, kannst du diese Zeile entfernen.
 
Vielen dank habe deins ein bisschen abgeändert, läuft nun wie ich es möchte :-)
Brauche nur Titel und die Topic ID damit ichs verlinken kann.

PHP:
SELECT t.topic_id, t.topic_title
FROM db_topics AS t, db_posts AS p
WHERE t.topic_status <> 2 AND p.post_id = t.topic_last_post_id
ORDER BY p.post_id DESC
LIMIT 0,5
 
Zurück