Jenau. Du tust dich leichter, wenn du dies in mehreren Queries machst. Hier mal ein Code zum Einbau in ein ACP-Modul:
Code:
$
sql = 'SELECT poster_id, count(post_id) as post_count
FROM '. POSTS_TABLE .'
WHERE poster_id > 0
GROUP BY poster_id';
if (!($result = $
db->sql_query($
sql)))
{
message_die(GENERAL_ERROR, 'Could not
query posts table', '', __LINE__, __FILE__, $
sql);
}
while ($row = $
db->sql_fetchrow($result))
{
$
sql = 'UPDATE '. USERS_TABLE .'
SET user_posts = '. $row['post_count'] .'
WHERE user_id = '. $row['poster_id'];
if (!$
db->sql_query($
sql))
{
message_die(GENERAL_ERROR, 'Could not update user table', '', __LINE__, __FILE__, $
sql);
}
}
$
db->sql_freeresult($result);
Der Code kann bei einem groesseren Forum schon mal laenger laufen. Deshalb gibt es verschiedene Scripte, die das Ganze als ACP-Modul implementieren. Da gibts dann einen Batch-Mode, so dass man bei einem eventuellen Abbruch nicht von ganz vorne anfangen muss, sondern in der Mitte anfangen kann.
Bezueglich der beiden Beitragstabellen: die Infos sind geteilt. Die Daten, die man oft benoetigt, sind in phpbb_posts, waehrend Text und
BBCode-UID in phpbb_posts_text liegt. Ob das wirklich Vorteile bringt, sei dahingestellt, es ist aber nunmal so gemacht
Greetz
alcaeus