So ich hab das jetzt verbaut...und ausgiebig getestet...
Leider scheint das deutlich mehr Aufwand zu erfordern.
Folgendes klappt:
wenn ich in einem Forum welches die Beiträge ZÄHLT ein Thema eröffne, erhöht sich der Counter
wenn ich in einem Forum, welches die Beiträge ZÄHLT einen Beitrag in einem existenten Thema schreibe, erhöht sich der Counter
wenn ich in einem Forum, welches die Beiträge ZÄHLT einen Beitrag lösche, indem ich auf das kleine X drücke, verringert sich der Counter
Ich habe NICHT im Moderations-Bereich oder Admin-Bereich das Löschen von Themen oder Beiträgen getestet!
Hier gibts aber Probleme: (vllt habe ich ja einen Fehler beim Einbau gemacht? Aber ich bin beim Modeinbau eigentlich immer sehr vorsichtig und arbeite eins nach dem anderen ab. Fertiges verstecke ich mit hide, damit ich ja nix vergesse) Und bisher hab ich noch jeden Mod beim ersten Mal installiert bekommen, ohne Fehler.
Probleme:
Wenn ich ein Thema lösche (Egal ob das Forum die Beiträge zählt oder nicht) wird der Counter nicht aktualisiert. Unabhängig davon wie viele Beiträge im Thema sind.
Wenn ich in einem Forum, in welchem Beiträge NICHT gezählt werden, einen Beitrag lösche, produziert das einen MySQL Error
Code: Alles auswählen
Allgemeiner Fehler
SQL ERROR [ mysqli ]
Unknown column '1361915650user_posts_total' in 'field list' [1054]
Der Beitrag wird zwar gelöscht, aber der Counter nicht aktualisiert bzw verringert
3.) Wenn ich in einem Forum, in welchem die Beiträge NICHT gezählt werden einen Beitrag verfasse oder ein neues Thema starte kommt ebenfalls ein MySQL Error
Code: Alles auswählen
SQL ERROR [ mysqli ]
Unknown column '1361921174user_posts_total' in 'field list' [1054]
SQL
UPDATE phpbb_users SET user_lastpost_time = 1361921174user_posts_total = user_posts_total + 1 WHERE user_id = 2
BACKTRACE
FILE: (not given by php)
LINE: (not given by php)
CALL: msg_handler()
FILE: [ROOT]/includes/db/dbal.php
LINE: 757
CALL: trigger_error()
FILE: [ROOT]/includes/db/mysqli.php
LINE: 182
CALL: dbal->sql_error()
FILE: [ROOT]/includes/functions_posting.php
LINE: 2494
CALL: dbal_mysqli->sql_query()
FILE: [ROOT]/posting.php
LINE: 1142
CALL: submit_post()
Der Beitrag wird zwar erstellt, aber er wird im Forum nicht als existent angezeigt (also auf der Indexseite)
wenn ich nun DIESEN Beitrag lösche, der mit dem MySQL Error erstellt wurde, kommt diese Fehlermeldung, statt der obigen
Code: Alles auswählen
SQL ERROR [ mysqli ]
Out of range value for column 'forum_posts' at row 1 [1264]
SQL
UPDATE phpbb_forums SET forum_posts = forum_posts - 1 WHERE forum_id = 6
BACKTRACE
FILE: (not given by php)
LINE: (not given by php)
CALL: msg_handler()
FILE: [ROOT]/includes/db/dbal.php
LINE: 757
CALL: trigger_error()
FILE: [ROOT]/includes/db/mysqli.php
LINE: 182
CALL: dbal->sql_error()
FILE: [ROOT]/includes/functions_posting.php
LINE: 1606
CALL: dbal_mysqli->sql_query()
FILE: [ROOT]/posting.php
LINE: 1620
CALL: delete_post()
FILE: [ROOT]/posting.php
LINE: 322
CALL: handle_post_delete()
Mal eine kleine Frage als Laie.
Wäre nicht folgendes möglich:
Jedes Mal, wenn ein Thema gestartet wird, ein Beitrag erstellt wird, ein Thema gelöscht wird, ein Beitrag gelöscht wird, wird dieser MySQL Befehl ausgeführt:
Code: Alles auswählen
UPDATE phpbb_users SET user_posts_total = (SELECT count(post_id) FROM phpbb_posts WHERE user_id = poster_id);
Thema duplizieren, oder Löschen über ACP und MCP müsste man evlt auch berücksichtigen, wäre imo aber zu vernachlässigen, denn wenn es da kurzfristig zu Fehlinformationen kommt, wird das behoben, sobald ein regulärer Beitrag erstellt wird...
Geht das??