News:

Bored?  Looking to kill some time?  Want to chat with other SMF users?  Join us in IRC chat or Discord

Main Menu

Sortieren nach ID und nicht Zeit

Started by elfinit, September 14, 2004, 03:34:28 PM

Previous topic - Next topic

elfinit

Hallo

Warum werden eigentlich die Topics in der MessageIndex.php nach ID_LAST_MSG sortiert und nicht nach der Zeit? Die Zeit als Sortierkriterium zu benutzen wäre eigentlich viel sicherer. Es könnte sein, dass irgendwelche alten Daten nachträgtlich importiert werden und so werden sie vor den neueren Topics angezeigt, was aber falsch ist.

bye
-elfinit

Christian Land

Ersetz halt

'last_post' => 't.ID_LAST_MSG'

durch

'last_post' => 'lastPosterTime'

mediman

Quote from: elfinit on September 14, 2004, 03:34:28 PM
Hallo

Warum werden eigentlich die Topics in der MessageIndex.php nach ID_LAST_MSG sortiert und nicht nach der Zeit? Die Zeit als Sortierkriterium zu benutzen wäre eigentlich viel sicherer. Es könnte sein, dass irgendwelche alten Daten nachträgtlich importiert werden und so werden sie vor den neueren Topics angezeigt, was aber falsch ist.

bye
-elfinit

Weil die Queries schneller laufen? Wenn du SnowCrashs Änderung machst, solltest du die Zeit indizieren, sonst wird dein Board bald kriechen.

mediman
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

elfinit

Ja, über die von 'SnowCrash' vorgeschlagene Änderung habe ich auch schon nachgedacht.

Wenn man aber die IDs wieder in die richtige Reihenfolge bringen will, so müsste man die Tabellen konvertieren. Was aber ziemlich kompliziert zu sein scheint. Man müsste aus der alten messages-Tabelle alles nach Datum sortiert auslesen und dann die Daten in die neue messages-Tabelle einfügen. Aber dann wären noch die Topics. Da müssen ja die IDs auch angepasst werden.

Hmm. Mal schauen. Zumindest ist das die einzige alternative Lösung, die mir gerade einfällt.

mediman

Quoteso müsste man die Tabellen konvertieren. Was aber ziemlich kompliziert zu sein scheint
Warum kompliziert? Du kannst ja die Änderung von Snowcrash tuten, nur indiziere die "lastPosterTime". Fettich is!

Da muss nix in der "richtigen" Reihenfolge in der DB stehen. SMF muss es nur "vorsortieren" dürfen, was per Indizierung geschieht.

mediman
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

elfinit

Gut, dann bin ich ja beruhigt. Werde einfach an den entsprechenden Stellen Sources ändern und posterTime indizieren.

Christian Land

Och... eigentlich isses doch ganz einfach *g*

Man muss sich nur die aktuelle Topic- und Post-ID merken, dann importiert man die alten Postings, lässt ein "paar" Update-Queries laufen, die alle Post- und Topic-IDs die kleiner sind als die Werte die man sich gemerkt hat, auf Werte hochzieht, die höher sind als die IDs die entstehen wenn man importiert hat...

Also angenommen man hatte 100 Postings und 50 Threads (nehmen wir der Einfachheit halber 100+50 auch als als IDs) und importiert dann nochmal 500 Postings und 200 Threads... dann hat man also 600 als höchste Posting-ID und 250 als höchste Topic-ID... also geht man her und macht ein Update auf alle relevanten Tabellen (logs, topics, boards, usw - so ziemlich fast alle tabellen *g*) und setzt dort die Posting IDs für alle Postings mit ID <= 100 auf ID + 501 ... analog dazu setzt man dann alle Topics auf ID + 201 ... und schon stimmt die Reihenfolge wieder... vorausgesetzt alle Postings+Threads die man importiert hat sind älter als das älteste Posting das vorher im Forum war.... ;D

elfinit

@SnowCrash
Ich denke, ich werde doch solch einen Script schreiben müssen. Danke für die Beschreibung. Nebenbei: Ich habe über 94.000 Nachrichten. :-\

@mediman
Das Prob ist, dass nicht nur in Display.php alles nach ID_MSG sortiert wird, sondern in dem ganzen Forum. Ich hätte jede Menge ändern müssen. Und das immer wieder bei dem Forumupdate.

elfinit

#8
Hmm. Ich denke rechnen werde ich hier nicht können. Die Posts, die Post die importiert werden müssen, sind nicht alle gleich alt.

//edit
Werden nicht die Boardswerte in der boards-Tabelle durch die Feature "Statistiken und Forumswerte neu berechnen." berechnet.

mediman

Quote from: elfinit on September 15, 2004, 08:31:56 AM@mediman
Das Prob ist, dass nicht nur in Display.php alles nach ID_MSG sortiert wird, sondern in dem ganzen Forum. Ich hätte jede Menge ändern müssen. Und das immer wieder bei dem Forumupdate.
Danke für den Hinweis :-)
soviele queries sind das nicht, einfach per globaler replace funktion (hat jeder halbwegs vernünftige editor) die relevanten queries ändern. und in den tables die indizes setzen.

mediman
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

elfinit

Sind die Indizes nicht schon default gesetzt?

mediman

für lastpostertime? denk nicht... schau halt nach...

meine DB it etwas "customisiert", da ich einen java chat server (non blocked io classes) integriert habe und dieser die tables von smf im rahmen einer "community" nutzt.

mediman
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

Advertisement: