News:

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

Main Menu

Timestamp ändern

Started by Hersfeld, August 29, 2014, 05:22:41 AM

Previous topic - Next topic

Hersfeld

Ich möchte gerne in einem bestehenden Thema ein paar Beiträge zwischen den ersten und den zweiten Beitrag einfügen.
Da die Beiträge aber nach Datum sortiert sind müsste ich dafür den Timestamp der Beiträge so ändern, dass er zwischen
Erstellen des ersten und den zweiten Posts liegt. Die müsste ich ja in der SQL-Datenbank machen wenn ich das richtig
sehe. Hat jemand eine Anleitung, wie ich das mache?
Danke schonmal.

Tekkla

In der {db_prefix_}messages Tabelle das Feld poster_time wie gewünscht anpassen. Änderungen an der Tabelle mit phpMyAdmin oder was immer zu deinem Webspace dafür installiert wurde. Timestampumrechnungen dann hiermit http://elmar-eigner.de/tstamps.html

Und nie vergessen: VORHER EIN BACKUP MACHEN!

Hersfeld

Danke schonmal für die Antwort. Das mit dem Ändern hat geklappt, allerdings hat sich jetzt ein weiteres Problem ergeben.
Im Beitrag steht zwar eine andere Zeit aber der Post steht trotzdem am Ende obwohl er vom Datum her an Stelle 2 stehen
sollte.

Justyne

Lass mal die DB Reparatur laufen und lass mal alles neu zaehlen. Dann klappt es vielleicht.

Falls es dann immer noch nicht geht schau mal nach ob die ID von dem Post in {db_prefix_}topics als id_last_msg steht.
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.

Hersfeld

DB Reparatur hat nicht geholfen und die ID_last_mdg ist es auch nicht.

Justyne

Okay.

Hier ist wie das was wird.

Nimm das erste Post und stelle fest was die msg_id von dem Post ist. Dann nimm das Post was a dritter Stelle sein soll wenns fertig ist und finde die msg_id davon.

Dann: finde in der DB eine msg_id zwischen #1  und #3 die nicht vergeben ist.

Nehm diese ID fuer dein 2tes Post.

SMF sortiert Antworten nach message ID.

Sorry fuer die komplizierte Antwort. Geht nicht anders.
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.

Hersfeld

Das ist ja blöd. Post 1 und 2 haben aufeinanderfolgende IDs also müsste ich da ewig IDs tauschen.
Trotzdem danke.

Justyne

Sorry du armer. Das ist ja echt doof.
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.

Tekkla

#8
In einer unveränderten Display.php findest du in Zeile 984

ORDER BY id_msg' . (empty($options['view_newest_first']) ? '' : ' DESC'),

Andere diese in

ORDER BY poster_time' . (empty($options['view_newest_first']) ? '' : ' DESC'),

Du solltest das vor dem Liveeinsatz ausgiebig mit einer Kopie deines Forums testen, ob es nicht irgendwelche Seiteneffekte hat. Für Fehler oder Probleme nicht mich verantwortlich machen.


Nachtrag: Ich sehe grad, dass der MessageIndex bei mir "No messages" anzeigt. Bei dir auch?

Hersfeld

Das hört sich interessant an, muss ich mal testen.

MessageIndex in der DB oder wenn du die Display.php verändert hast und dann das ganze dann testest?

Justyne

Würde ich nicht empfehlen. Das hat ziemliche Performance Einbußen wenn man das macht.

Dann lieber einmal durchs neu numerieren quälen.
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.

Hersfeld

Also bei einem einseitigen Thread passt das jetzt. Wenn ich aber einen Thread über zwei Seiten habe dann wird der Beitrag vom Ende nicht an Platz 2 (Seite 1) geschoben sondern an Platz 1 auf Seite 2.

Justyne

Seltsam.

Hast du da einen Link zu dem Thread sodass ich mir das mal mit meinen eigenen Augen ansehen kann?
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.

Tekkla

Quote from: Hersfeld on August 31, 2014, 09:39:38 AM
Also bei einem einseitigen Thread passt das jetzt. Wenn ich aber einen Thread über zwei Seiten habe dann wird der Beitrag vom Ende nicht an Platz 2 (Seite 1) geschoben sondern an Platz 1 auf Seite 2.

Ich habe da noch etwas übersehen. Du musst einige Zeilen weiter oben auch das id_msg gegen poster_time in der ORDER BY Anweisung ändern. Zu finden in einer unveränderten Display.php in Zeile 804.

Aus
ORDER BY id_msg ' . ($ascending ? '' : 'DESC') . ($context['messages_per_page'] == -1 ? '' : '
muss
ORDER BY poster_time ' . ($ascending ? '' : 'DESC') . ($context['messages_per_page'] == -1 ? '' : '
werden.

Zum Thema Performance: Ja, jedes Sortieren von Daten kostest Zeit. Somit ist es immer ein Performanceverlust gegenüber unsortierten Daten. Es wird aber eh schon über die Spalte id_msg sortiert. Einziger Unterschied: Die Spalte poster_time wird anders als id_msg nicht indiziert, und so kann es da tatsächlich die Geschwindigkeit spürbar beeinträchtigen. Wohlgemerkt kann, nicht muss. Bei einem Forum mit sehr hohem Traffic kommt sowas dann schnell zum Tragen. Also teste, ob du mit diesen Änderungen Probleme bekommst.

Justyne

#14
Genau das.

Posts kann man zur Not mir einer query neu durchnumerieren.
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.

Hersfeld

Dann schaue ich mal ob es mit der weiteren Änderung klappt. Thema Performance ist denke ich nicht so das Problem, da es ein Forum mit 8 Leuten ist und nur zur Organisation und ähnlichem genutzt wird.

Hersfeld

Habe es mal geändert und es läuft jetzt. Vielen Dank für die Hilfe!

Advertisement: