[Erledigt] SQL Letzte Beitragsseite finden
[Erledigt] SQL Letzte Beitragsseite finden
Ich überlege hier die ganze Zeit schon rum und komm einfach nicht auf die Lösung.
Wie muß ich meine SQL Abfrage stellen, wenn ich anhand der postid die Seitenzahl rausbekommen möchte und das bei allen letzten Beiträgen für alle Foren?
Also es soll als Ergebniss herauskommen:
ForumId, Seite
3, 30
5, 15
6, 0
7, 60
usw.
ich komm einfach nicht drauf, müßte mit COUNT doch gehen? Aber wie?
Wie muß ich meine SQL Abfrage stellen, wenn ich anhand der postid die Seitenzahl rausbekommen möchte und das bei allen letzten Beiträgen für alle Foren?
Also es soll als Ergebniss herauskommen:
ForumId, Seite
3, 30
5, 15
6, 0
7, 60
usw.
ich komm einfach nicht drauf, müßte mit COUNT doch gehen? Aber wie?
Zuletzt geändert von bgx am 08.01.2007 23:10, insgesamt 1-mal geändert.
Hi,
das geht auch, ist sogar recht simpel:
das geht auch, ist sogar recht simpel:
Code: Alles auswählen
SELECT forum_id, count(posts) as post_count
FROM xy
GROUP BY forum_id
- gn#36
- Ehrenadmin
- Beiträge: 9313
- Registriert: 01.10.2006 16:20
- Wohnort: Ganz in der Nähe...
- Kontaktdaten:
Vielleicht sollte man das Problem erst einmal zerlegen:
auf ein Topic bezogen:
Es gibt eine Board Konfiguration für die Posts pro Seite (nenn ich mal $config)
Seitenzahl des letzten Posts:
Test:
sagen wir $config sei 10.
Wir haben ein Thema mit 36 Beiträgen, d.h. der letzte Beitrag muss auf Seite 4 sein (1 bis 10 auf 1, 11 bis 20 auf 2 ...).
würde herauskommen: count(*) = 36
/10 = 3,6
CEIL() => 4
Diese Abfrage besorgt aus allen Themen die letzte Seite des Themas unabhängig vom Forum.
Wenn das pro Forum laufen soll müsste man erst noch das neueste Thema des Forums kennen.
Mir ist leider nicht ganz klar, wie du das genau auf ein Forum beziehen willst. Außerdem ist das - falls du mit dieser Postid einfach das Forum anzeigen willst - gar nicht nötig, du kannst viewtopic auch eine postid übergeben. -> du könntest vielleicht auch da einfach einen Blick rein werfen, da muss ja etwas ähnliches gemacht werden, das Skript kriegt eine post_id und bestimmt das anzuzeigende Forum nebst Seite (das wird vermutlich kaum anders laufen als mein SQL Befehl, aber wer weiß?)
auf ein Topic bezogen:
Es gibt eine Board Konfiguration für die Posts pro Seite (nenn ich mal $config)
Seitenzahl des letzten Posts:
Code: Alles auswählen
SELECT topic_id, CEIL(count(*)/($config)) AS seite FROM phpbb_posts GROUP BY topic_id
sagen wir $config sei 10.
Wir haben ein Thema mit 36 Beiträgen, d.h. der letzte Beitrag muss auf Seite 4 sein (1 bis 10 auf 1, 11 bis 20 auf 2 ...).
würde herauskommen: count(*) = 36
/10 = 3,6
CEIL() => 4
Diese Abfrage besorgt aus allen Themen die letzte Seite des Themas unabhängig vom Forum.
Wenn das pro Forum laufen soll müsste man erst noch das neueste Thema des Forums kennen.
Mir ist leider nicht ganz klar, wie du das genau auf ein Forum beziehen willst. Außerdem ist das - falls du mit dieser Postid einfach das Forum anzeigen willst - gar nicht nötig, du kannst viewtopic auch eine postid übergeben. -> du könntest vielleicht auch da einfach einen Blick rein werfen, da muss ja etwas ähnliches gemacht werden, das Skript kriegt eine post_id und bestimmt das anzuzeigende Forum nebst Seite (das wird vermutlich kaum anders laufen als mein SQL Befehl, aber wer weiß?)
Zuletzt geändert von gn#36 am 08.01.2007 23:15, insgesamt 1-mal geändert.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
- mad-manne
- Ehemaliges Teammitglied
- Beiträge: 5403
- Registriert: 18.03.2005 10:00
- Wohnort: Marl im Ruhrgebiet
Sorry für Offtopic, aber den konnte ich mir nicht verkeifenbgx hat geschrieben:Sorry, ich bin so blöd wie ich lang bin.![]()
![]()

Naja ... so dumm kannst du dann aber trotzdem nicht sein. YODA ist doch nur 94 cm gross

Gruss,
Manne.
Try not. Do or do not. There is no try. (YODA)
Supportanfragen via E-Mail oder PN werden ignoriert
Supportanfragen via E-Mail oder PN werden ignoriert
Sorry für OT danach könnt ihr das Ding auch zumachen!
Nee so dumm bin ich normalerweise auch nich, hab den Canned Mod umgefriemelt so das er per Cron wie hier im Forum bestimmte Beiträge raushaut.
Nur heute hab ich den Wald vor lauter Bäumen nicht gesehen.
Ich Post hier mal die Lösung, falls es noch jemand braucht:
Hab CH in einer älteren Version und wollte auf dem Index die letzten Beiträge in einer schöneren URL darstellen.
Es hat bereits genügt einfach t.topic_replies zur Abfrage hinzu zu schreiben und ein paar Codezeilen umzuschreiben.
Also hier t.topic_replies hinzu:
und weiter unten dann:
usw....
Vielleicht füg ich es als Codeschnipsel auf meiner Seite hinzu.
Schönen Abend noch und Danke für die Hilfe.
P.S.: Fühl mich richtig Wohl bei euch... (Sollte auch mal gesagt werden)
Nee so dumm bin ich normalerweise auch nich, hab den Canned Mod umgefriemelt so das er per Cron wie hier im Forum bestimmte Beiträge raushaut.
Nur heute hab ich den Wald vor lauter Bäumen nicht gesehen.
Ich Post hier mal die Lösung, falls es noch jemand braucht:
Hab CH in einer älteren Version und wollte auf dem Index die letzten Beiträge in einer schöneren URL darstellen.
Es hat bereits genügt einfach t.topic_replies zur Abfrage hinzu zu schreiben und ein paar Codezeilen umzuschreiben.
Also hier t.topic_replies hinzu:
Code: Alles auswählen
$sql = "SELECT p.forum_id, p.topic_id, p.post_time, p.post_username, u.username, u.user_id, t.topic_last_post_id, t.topic_title, t.topic_replies
FROM ((" . POSTS_TABLE . " p
LEFT JOIN " . TOPICS_TABLE . " t ON t.topic_id = p.topic_id AND t.forum_id = p.forum_id AND t.topic_moved_id = 0)
LEFT JOIN " . USERS_TABLE . " u ON u.user_id = p.poster_id )
WHERE ( p.post_time > $user_lastvisit $sql_last_posts )
AND p.post_id = t.topic_last_post_id";
Code: Alles auswählen
$tsit = floor((intval($data['topic_replies'])) / intval($board_config['posts_per_page'])) * intval($board_config['posts_per_page']);
if ($tsit==0)
$topic_title = '<a href="' . append_sid("topic," . $data['topic_id']) . ',-'.$url.'.html#' . $data['tree.topic_last_post_id'] . '" title="' . $data['tree.topic_title'] . '">' . $topic_title . '</a><br />';
else
$topic_title = '<a href="' . append_sid("topic,".$tsit."," . $data['topic_id']) . ',-'.$url.'.html#' . $data['tree.topic_last_post_id'] . '" title="' . $data['tree.topic_title'] . '">' . $topic_title . '</a><br />';
Vielleicht füg ich es als Codeschnipsel auf meiner Seite hinzu.
Schönen Abend noch und Danke für die Hilfe.
P.S.: Fühl mich richtig Wohl bei euch... (Sollte auch mal gesagt werden)