Zählen von TOTAL-POSTS mit User-Beiträgen

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
madosch
Mitglied
Beiträge: 102
Registriert: 20.09.2006 11:10
Wohnort: Lauter / Dresden
Kontaktdaten:

Zählen von TOTAL-POSTS mit User-Beiträgen

Beitrag von madosch »

Hi zusammen! Ich möchte die Anzahl der Posts in der Statistik ganz unten nicht durch die reelle Anzahl der noch vorhandenen Beiträge, sondern durch die Anzahl der tatsächlich bisher geschriebenen Beiträge (Summe der User-Beitrags-Zahlen) darstellen lassen, da durch Pruning das ganze irgendwie sinngemäß verfälscht wird...

//edit: hab die Lösung selbst gedingst:

[ÖFFNE]
/includes/functions.php

[SUCHE]

Code: Alles auswählen

		case 'postcount':
		case 'topiccount':
			$sql = "SELECT SUM(forum_topics) AS topic_total, SUM(forum_posts) AS post_total
				FROM " . FORUMS_TABLE;
			break;

[ERSETZEN MIT]

Code: Alles auswählen

case 'postcount':
		$sql= "SELECT SUM(user_posts) AS post_total
			FROM phpbb_users WHERE user_id <> 0";
			break;
			
		case 'topiccount':
			$sql = "SELECT SUM(forum_topics) AS topic_total
				FROM " . FORUMS_TABLE;
			break;
Die Zahl der gesamten Beiträge ist jetzt nicht mehr der Anzahl der in der Datenbank tatsächlich noch vorhandenen Posts abhängig, sondern von der Summer der Postzahlen der einzelnen User. (Die Postzahl der User bleibt nämlich trotz Pruning / Post- und Threadlöschen gleich)

Hat die Datenbankvorlesung, in der ich nur ein mal war, also trotzdem was gebracht. Amen!
Zuletzt geändert von madosch am 22.10.2006 17:58, insgesamt 1-mal geändert.
Niobe
Mitglied
Beiträge: 43
Registriert: 25.01.2006 20:42

Beitrag von Niobe »

hallo madosch!

habs direkt eingebaut - kleiner Hinweis: hinter dem zweiten "break" fehlt ein ";"

und ansonsten bekomme ich jetzt "Unsere Benutzer haben noch keine Beiträge geschrieben." angezeigt statt den erwarten 97.000 ...

:oops:
Zlocko

Beitrag von Zlocko »

Da muß dir ein Fehler beim einbauen pass. sein, weil ich ihn nähmlich genauso eingebaut habe wie er oben steht und es kahm bis jetzt keine Fehlermeldung.


P.S. Natürlich mit dem (komma) hinterm Break. :wink:
Benutzeravatar
madosch
Mitglied
Beiträge: 102
Registriert: 20.09.2006 11:10
Wohnort: Lauter / Dresden
Kontaktdaten:

Beitrag von madosch »

jupp ich hab das Semikolon jetzt mal eingefügt, ist bei mir natürlich auch da.

@Niobe: Da muss ein Fehler passiert sein, sonst klappt es super!
.... vielleicht heissen die Tabellen bei Dir anders? (standard der Tabelle ist 'phpbb_users')
falls die Tabellen anders heissen, spuckt der COUNT(...) eben "0" aus. Wäre es ein anderer Fehler, käme eine Fehlermeldung

//edit: das 'WHERE user_id <> 0' kann man auch weglassen schätze ich.
Man kann hier alternativ auch anhand der user_id die Beiträge von anonymen Usern / Gästen nicht mitzählen lassen (mit 'WHERE user_id > 0')
Niobe
Mitglied
Beiträge: 43
Registriert: 25.01.2006 20:42

Beitrag von Niobe »

madosch hat geschrieben:@Niobe: Da muss ein Fehler passiert sein, sonst klappt es super!
.... vielleicht heissen die Tabellen bei Dir anders? (standard der Tabelle ist 'phpbb_users')
falls die Tabellen anders heissen, spuckt der COUNT(...) eben "0" aus. Wäre es ein anderer Fehler, käme eine Fehlermeldung
:D das war's!

danke schön!
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag von fanrpg »

Warum verwendest du statt phpbb_users nicht einfach die Konstante USERS_TABLE ??
Die enthält automatisch den prefix + _users
Benutzeravatar
madosch
Mitglied
Beiträge: 102
Registriert: 20.09.2006 11:10
Wohnort: Lauter / Dresden
Kontaktdaten:

Beitrag von madosch »

rischdisch. enthält die aber auch die postings? wenn ja, wäre das spitze

//edit: Zählt leider nix zusammen, wo in dieser USERS_TABLE stehen denn die Postings?
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Gemeint ist die Konstante USERS_TABLE die dann z.B. so benutzt werden muss:

Code: Alles auswählen

$sql = "SELECT * FROM ". USERS_TABLE . " WHERE xyz";
Die Konstante wird in der Datei constants.php mit Inhalt gefüllt und enthält dann den korrekten Namen der Usertabelle egal in welchem Forum man sich gerade befindet und welches Prefix dieses Forum hat. Für alle Tabellen existiert so eine Konstante, alle Konstanten sind zu finden in der constants.php im includes Ordner. Wenn du USERS_TABLE einfach so in den SQL Befehl einbaust kann das natürlich nicht funktionieren, da die Konstante dann nicht mit ihrem Inhalt interpretiert wird sondern als String und diese Tabelle gibt es dann nicht.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
madosch
Mitglied
Beiträge: 102
Registriert: 20.09.2006 11:10
Wohnort: Lauter / Dresden
Kontaktdaten:

Beitrag von madosch »

Die Konstante wird in der Datei constants.php mit Inhalt gefüllt
da erkennt man leider nicht sehr viel, was ist denn nun eigentlich drin? bzw wie wertet man die konstante aus, so dass man am ende die postings der user erhält?
fanrpg
Mitglied
Beiträge: 2909
Registriert: 13.12.2004 22:41

Beitrag von fanrpg »

Code: Alles auswählen

case 'postcount': 
      $sql= "SELECT SUM(user_posts) AS post_total 
         FROM ". USERS_TABLE ." WHERE user_id <> 0"; 
         break; 
          
      case 'topiccount': 
         $sql = "SELECT SUM(forum_topics) AS topic_total 
            FROM " . FORUMS_TABLE; 
         break;
So müsste dein Code dann aussehen.
Und die Felder bleiben natürlich gleich, da es die selbe Tabelle ist :wink:
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“