Seite 2 von 2

Re: Beide "Anzahl der Beiträge" Zahlen anzeigen

Verfasst: 22.02.2013 17:17
von Maugrim
ah das heisst ich muss in phpbb_posts noch eine weitere Tabelle anlegen

und dann kann ich mit deiner verbesserten Abfrage diese Zahl auslesen
wird die dann automatisch beim posten eines Beitrages in diese Tabelle eingetragen? Oder brauch ich dafür noch etwas?

Und wie kann ich sie dann unter dem Avatar neben den Beiträgen anzeigen lassen? Brauche ich dafür noch was?


btw: ich hab mich an dem Mod von nickvergessen orientiert (NV usertopics)
kann ich mich für meine Zwecke auch weiter an dem Mod orientieren?

Re: Beide "Anzahl der Beiträge" Zahlen anzeigen

Verfasst: 24.02.2013 11:00
von Miriam
Ich kenne diese MOD nicht.
Du mußt aber sicherlich die Gesamt-Posts des jeweiligen Users auch in die Usertabelle eintragen. Dann kann sie immer auf ganz "normalem" Wege abgerufen werden.

Re: Beide "Anzahl der Beiträge" Zahlen anzeigen

Verfasst: 25.02.2013 11:02
von Maugrim
und wie trage ich sie ein?

Ich nehme mal an, wenn man beim Verfassen einer Nachricht auf ABSENDEn drückt, dann schreibt eine Funktion ein +1 in die entsprechende Tabelle AUßER man schreibt in einem Forum, in welchem der Counter nicht erhöht wird


ich müsste also nur eine zweite Funktion zu dem Absendenknopf hinzufügen die mir den Wert in die neue Tabelle einschreibt, der ALLE BEITRÄGE zählen soll


sehe ich das richtig?


in welcher php bzw html Datei wird diese Funktion denn deklariert?

Re: Beide "Anzahl der Beiträge" Zahlen anzeigen

Verfasst: 25.02.2013 21:24
von Miriam
Genauso ist es... Das wären dann die Funktionen submit_post() bzw. delete_post() in der includes/function_posting.

Vorbemerkung:
  • Das Tabellenpräfix, das in der config.php definiert wurde, heißt phpbb_
  • Es werden in dieser Abhandlung nicht die Beitragslöschungen im ACP betrachtet.
Lektüre VOR der Umsetzung konsumieren:
  • KB:phpmyadmin
  • KB:pma_faq
  • KB:tippstyles
Dann:
  1. Erstelle eine Tabellenspalte in der Benutzertabelle die user_total_posts heißt.

    Code: Alles auswählen

    ALTER TABLE phpbb_users ADD user_posts_total MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0' AFTER user_posts;
  2. Gleiche die Summe der Posts aller User ab:

    Code: Alles auswählen

    UPDATE phpbb_users SET user_posts_total = (SELECT count(post_id) FROM phpbb_posts WHERE user_id = poster_id); 
Ändere den Code in einigen php-Dateien nach diesem Kochrezept (außer den dortigen SQL Anweisungen... die hast Du ja schon ausgeführt).

Re: Beide "Anzahl der Beiträge" Zahlen anzeigen

Verfasst: 25.02.2013 22:38
von Maugrim
Hey! vielen Lieben Dank dir :) :cookie:

Re: Beide "Anzahl der Beiträge" Zahlen anzeigen

Verfasst: 26.02.2013 23:59
von Maugrim
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??

Re: Beide "Anzahl der Beiträge" Zahlen anzeigen

Verfasst: 27.02.2013 19:09
von Miriam
Sehr gut, Maugrim.

Maugrim hat geschrieben: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);
An etwas ähnliches hatte ich auch gedacht.

Du könntest es in die viewtopic.php einbauen.
Finde dort:

Code: Alles auswählen

$hilit_words    = request_var('hilit', '', true); 
danach füge ein:

Code: Alles auswählen

// Update total post count
$sql = 'UPDATE ' . USERS_TABLE . ' 
        SET user_posts_total = 
            (SELECT COUNT(post_id) FROM ' . POSTS_TABLE  . ' 
            WHERE user_id = poster_id)';
$db->sql_query($sql); 
Das ist keine saubere phpBB3 Lösung, aber für Dich kann es so klappen.

Re: Beide "Anzahl der Beiträge" Zahlen anzeigen

Verfasst: 27.02.2013 21:55
von Maugrim
Miriam hat geschrieben:Sehr gut, Maugrim.
:grin: 8)


habs schon eingebaut und funkt super :)
falls später Bugs oder so auftreten, darf ich mich wieder an dich wenden? :-? :lol:

Re: Beide "Anzahl der Beiträge" Zahlen anzeigen

Verfasst: 27.02.2013 22:33
von Miriam
Da bugt nichts... Kannst aber gern wieder hier posten.