Seite 1 von 1

Div. Listenabfragen (Lastposts, Nulltopics, watched topics)

Verfasst: 11.10.2006 20:25
von mgutt
Ich wollte auf die Profilseiten der User mehr Links bringen bzw. mehr Infos für andere User oder den User selbst.

In Zukunft würde ich dann z.B. beobachtete Beiträge nur für den eigenen User darstellen User lassen oder Admin/Mods etc.

Aber erstmal ein Beispiel:
http://www.maxrev.de/mgutt-u2.htm

Jetzt habe ich diverse Abfragen erstellt für jede einzelne Liste:

recent posts:

Code: Alles auswählen

SELECT DISTINCT t.* FROM phpbb_topics t, phpbb_forums f , phpbb_posts p WHERE f.forum_id = t.forum_id AND (f.forum_order BETWEEN 0 AND 3060) AND f.forum_id NOT IN(*ausgeschlossene_foren*) AND t.topic_id = p.topic_id AND p.poster_id = 2 ORDER BY t.topic_last_time DESC LIMIT 10
recent created topics:

Code: Alles auswählen

SELECT t.* FROM phpbb_topics t, phpbb_forums f WHERE f.forum_id = t.forum_id AND (f.forum_order BETWEEN 0 AND 3060) AND f.forum_id NOT IN(*ausgeschlossene_foren*) AND t.topic_poster = 2 ORDER BY t.topic_last_time DESC LIMIT 10
Diese beiden recents sind eigentlich falsch, denn Sie berücksichtigen nicht die Zeit als der User gepostet hatte, sondern wann die neueste Antwort in einem Topic wo er mal gepostet hatte abgegeben wurde.


watched topics by this user: (wir der Privatsphäre wegen nur für den User selbst in Zukunft geben)

Code: Alles auswählen

SELECT t.* FROM phpbb_topics t, phpbb_forums f , phpbb_topics_watch tw WHERE f.forum_id = t.forum_id AND (f.forum_order BETWEEN 0 AND 3060) AND f.forum_id NOT IN(*ausgeschlossene_foren*) AND tw.topic_id = t.topic_id AND tw.user_id = 2 ORDER BY t.topic_last_time DESC LIMIT 10
unanswered topics by this user:

Code: Alles auswählen

SELECT t.* FROM phpbb_topics t, phpbb_forums f WHERE f.forum_id = t.forum_id AND (f.forum_order BETWEEN 0 AND 3060) AND f.forum_id NOT IN(*ausgeschlossene_foren*) AND t.topic_poster = 2 AND t.topic_replies = 0 AND t.topic_moved_id = 0 ORDER BY t.topic_time DESC LIMIT 10

Jetzt möchte ich noch Listen erstellen für folgendes:
1. Topics in denen der User die meisten Antworten verfasst hat / am aktivsten war (absteigend) -> bekomme ich überhaupt nicht hin.. was mit GROUP BY?!
2. Topics, die der User als letztes gelesen (angeklickt) hat -> Hier gibt es doch einen Mod zu, soweit ich mich erinnere?!
3. die 10 letzten Bilder, die der User hochgeladen hat (bekomme ich selber hin)
4. die 10 letzten Videos, die der User hochgeladen hat (bekomme ich selber hin)
5. ... jemand eine Idee? Die besten Ideen wollte ich dann filtern ...

(Übrigens mache ich das, weil die Profile unheimlich gut in der Suchmaschine stehen und sonst nicht viele Links auf der Seite zu finden sind.)

Besonders Punkt 1 macht mir im Moment Kopf zerbrechen.

Gruß

Verfasst: 11.10.2006 21:55
von Jojoponn139
Hab ich das richtig verstanden, dass du eine MOD erstellen willst; die kompletten Änderungen aber als Anleitung haben willst?

...naja...

Verfasst: 11.10.2006 21:56
von mgutt
es geht nur um die sql-abfrage :roll:

Re: Div. Listenabfragen (Lastposts, Nulltopics, watched topi

Verfasst: 11.10.2006 22:04
von Pyramide
mgutt hat geschrieben:Diese beiden recents sind eigentlich falsch, denn Sie berücksichtigen nicht die Zeit als der User gepostet hatte, sondern wann die neueste Antwort in einem Topic wo er mal gepostet hatte abgegeben wurde.
Dann solltest du nach posts.post_time sortieren (und bei den erstellten Themen einen join auf topics.topic_first_post_id=posts.post_id machen)
mgutt hat geschrieben:Jetzt möchte ich noch Listen erstellen für folgendes:
1. Topics in denen der User die meisten Antworten verfasst hat / am aktivsten war (absteigend) -> bekomme ich überhaupt nicht hin.. was mit GROUP BY?!

Code: Alles auswählen

SELECT topic_id, count(post_id) AS post_count
FROM phpbb_posts
WHERE poster_id=<userid>
GROUP BY topic_id
ORDER BY post_count DESC
mgutt hat geschrieben:2. Topics, die der User als letztes gelesen (angeklickt) hat -> Hier gibt es doch einen Mod zu, soweit ich mich erinnere?!
AFAIK gibt es einen "unread post information to database mod". Da ich dessen Tabellen nicht kenne, kann ich dir zum query aber nichts sagen. Sieht warscheinlich so ähnlich aus wie der für die beobachteten Themen.
mgutt hat geschrieben:5. ... jemand eine Idee? Die besten Ideen wollte ich dann filtern ...
Die 5 dümmsten / intelligentesten Beiträge? :o