[Erledigt] SQL Letzte Beitragsseite finden

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
bgx
Mitglied
Beiträge: 228
Registriert: 30.11.2005 22:32
Kontaktdaten:

[Erledigt] SQL Letzte Beitragsseite finden

Beitrag von bgx »

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?
Zuletzt geändert von bgx am 08.01.2007 23:10, insgesamt 1-mal geändert.
neospin
Mitglied
Beiträge: 6
Registriert: 29.12.2006 19:26
Kontaktdaten:

Beitrag von neospin »

Hi,

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     
Benutzeravatar
bgx
Mitglied
Beiträge: 228
Registriert: 30.11.2005 22:32
Kontaktdaten:

Beitrag von bgx »

@neospin: Das wäre ja die Anzahl der Posts für ein Forum.

Ich möchte aber für alle Foren die Seitenzahl des letzten Beitrages herausfinden.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

bgx hat geschrieben:...Ich möchte aber für alle Foren die Seitenzahl des letzten Beitrages herausfinden.
Oder meinst Du für alle Foren die Anzahl der Seiten für das letzte Thema? :o
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

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:

Code: Alles auswählen

SELECT topic_id, CEIL(count(*)/($config)) AS seite FROM phpbb_posts GROUP BY topic_id
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ß?)
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.
Benutzeravatar
bgx
Mitglied
Beiträge: 228
Registriert: 30.11.2005 22:32
Kontaktdaten:

Beitrag von bgx »

Sorry, ich bin so blöd wie ich lang bin. :lol: :oops:

Man sollte nicht solange rum coden, dann leidet die Konzentration.

Ich hab schon ne Lösung gefunden. Hab total übersehen, das die replies in der topicrow gespeichert werden.

Dank euch nochmal! :wink:
Benutzeravatar
mad-manne
Ehemaliges Teammitglied
Beiträge: 5403
Registriert: 18.03.2005 10:00
Wohnort: Marl im Ruhrgebiet

Beitrag von mad-manne »

bgx hat geschrieben:Sorry, ich bin so blöd wie ich lang bin. :lol: :oops:
Sorry für Offtopic, aber den konnte ich mir nicht verkeifen :oops:

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

Gruss,
Manne.
Try not. Do or do not. There is no try. (YODA)
Supportanfragen via E-Mail oder PN werden ignoriert
Benutzeravatar
bgx
Mitglied
Beiträge: 228
Registriert: 30.11.2005 22:32
Kontaktdaten:

Beitrag von bgx »

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:

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";
und weiter unten dann:

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 />';
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)
Antworten

Zurück zu „Coding & Technik“