Seite 1 von 2

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

Verfasst: 19.10.2006 14:02
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!

Verfasst: 22.10.2006 16:48
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:

Verfasst: 22.10.2006 17:28
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:

Verfasst: 22.10.2006 17:59
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')

Verfasst: 22.10.2006 19:26
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!

Verfasst: 22.10.2006 19:32
von fanrpg
Warum verwendest du statt phpbb_users nicht einfach die Konstante USERS_TABLE ??
Die enthält automatisch den prefix + _users

Verfasst: 23.10.2006 07:01
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?

Verfasst: 23.10.2006 09:01
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.

Verfasst: 23.10.2006 09:33
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?

Verfasst: 23.10.2006 11:33
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: