Seite 1 von 1

Daten wiederhergestellter User rekonstruieren?

Verfasst: 11.09.2012 20:22
von wannabeadmin
Hallo zusammen,

mit dem support toolkit habe ich in meinem alten Chemieforum ex-User, die sich wieder beteiligen wollten, mittels Support Toolkit 1.0.5 reanimiert. Das hat ganz gut geklappt.

Aber: Das Anmeldedatum das angezeigt wird, ist natürlich von heute und nun will ich von immerhin einigen -zig bis hundert Usern das Datum der Anmeldung (user_regdate) wieder auf das Datum ihres ersten Beitrags setzen. Wer neu dazukommt, sieht nämlich so nicht, wie lange ein User schon aktiv ist. Dieses Datum wird unter dem Avatar angezeigt. So soll es auch wieder sein, aber mit einem sinnvollen Datum und nicht eins das lange nach dem ersten Beitrag liegt.

Das ist eher ein SQL-Problem, Datenbankfummeleien auf elementarem Niveau machen mir nichts aus, aber ich habe keine Idee, wie ich die Befehlszeilen formulieren soll um allen Usern mit einem Wert von user_id größer als z.B. 770 (alle nach der Wiederherstellung) einen Wert für user_regdate zu verpassen, der dem wert von post_time ihres jeweils ersten beitrags entspricht.

Danke und Gruß
Wannabeadmin

Re: Daten wiederhergestellter User rekonstruieren?

Verfasst: 11.09.2012 20:37
von Miriam

Code: Alles auswählen

UPDATE phpbb_users SET user_regdate = (
SELECT min( post_time )
FROM phpbb_posts
WHERE user_id = poster_id
AND poster_id >770
) 
Hab's nicht getestet!
DB Sicherung VORHER nicht vergessen.

Re: Daten wiederhergestellter User rekonstruieren?

Verfasst: 11.09.2012 21:52
von wannabeadmin
Jaaa :D
Das sieht plausibel aus und damit kann ich weiter arbeiten.
Herzlichen Dank!
wannabeadmin

Re: Daten wiederhergestellter User rekonstruieren?

Verfasst: 12.09.2012 00:04
von wannabeadmin
Da bin ich schon wieder ;)
Richtig funktioniert hat es nicht:
Nur die wiederhergestellten User wurden damit korrekt auf das richtige user_regdate gesetzt, alle anderen auf Null, als hättten sie sich am 1.1.1970 registriert.
Ich habe ein paar mal herumprobiert, aber immer ergebnislos.

Die Lösung: Die Tabelle runterladen und zusammensetzen aus dem richtgen Teil der ursprünglichen und der mit Deinem Skript "behandelten" Tabelle. dann alles wieder hochladen, eintragen per mysqldumper - fertig :)

Ist eine etwas rustikale Methode, aber immerhin .

Vielen Dank nochmal!

Wannabeadmin

Re: Daten wiederhergestellter User rekonstruieren?

Verfasst: 12.09.2012 00:17
von Nuramon
Probier es mal so:
UPDATE phpbb_users SET user_regdate = (
SELECT min( post_time )
FROM phpbb_posts
AND poster_id >770
)
WHERE user_id = poster_id

Re: Daten wiederhergestellter User rekonstruieren?

Verfasst: 12.09.2012 18:14
von Miriam
Mach es so:
  • Code: Alles auswählen

    UPDATE phpbb_users AS u LEFT JOIN (
    SELECT user_id, min( post_time ) AS first_post
    FROM phpbb_users, phpbb_posts
    WHERE user_regdate > post_time
    AND user_id = poster_id
    GROUP BY poster_id
    ) AS p ON u.user_id = p.user_id
    SET u.user_regdate = p.first_post
Jetzt werden alle Zeiten des ersten Posts als Reg.-Zeit der jeweiligen User benutzt, deren aktuelles Reg.-Datum nach dem ersten Post liegt.

Re: Daten wiederhergestellter User rekonstruieren?

Verfasst: 18.09.2012 15:48
von wannabeadmin
Besten Dank nochmal.
Das ist ein sehr nützliches Tool für Forumsarchäologen ;)

Mir hat schon der erste Vorschlag geholfen, weil ich die Tabelle einfach "zu Fuß" zusammengesetzt habe.

Grüße vom
wannabeadmin

Re: Daten wiederhergestellter User rekonstruieren?

Verfasst: 18.09.2012 17:53
von Miriam
Mit SQL & php kann ja jeder :-P

Hatte es nur zu spät gesehen, als ich mit Tüfteln fertig war.