Jedes mal posts zählen oder speichern?

Hallo

ich habe in php ein forum geschrieben. es funktioniert auch schon perfekt. nun habe ich auch eine anzeige eingebaut, die auf den threat seiten bei jedem user der gepostet hat auch die anzahl seiner posts zeigt.

nun wolte ich fragen ob es Schlauer ist, immer beim anzeigen der threads die bisherigen posts gezählt werden
(alle posts sind in einer tabelle;; dann zb WHERE user = ‘1’ oder so.)

oder ob man immer wenn einer einen post schreibt in der user tabelle ein wert um eins hochgezählt wird.

sprich; sollen die posts immer wieder neu gezählt werden oder einfach ausgelesen werden.

was ist schlauer? wenn man die zählmethode benutzt, kann es dann sein das bei mehreren tausend posts die seite langsam lädt oder gar abstürzt?

kann mich jemand aufklären und vielleicht auch sagen, wie das in anderen foren gelöst wird?

danke im voraus
bosz4 :smiley:

Schneller ist def. die Methode mit einer eig. Tabelle, da würde sich eine Art “temp_vars” anbieten, die in einem bestimmten Intervall neu syncronisiert wird, damit die Daten auch stimmen ;(

Ahhh ja. alles klar.

vielen dank!

ich denke, mit folgender Abfrage, kannst du auch aus der Postingtabelle zählen:

$sql = SELECT COUNT(*) AS `anzahl_posts` WHERE `user` = '" . mysql_real_escape_string($_SESSION['username']) . "'";

Das wollen wir doch nicht hoffen, dass ein Forum auf einem so schlechten Datenmodell aufsetzt, dass in der Posting-Tabelle Usernamen drinstehen.

hi,

die empfehlung für die vorgehensweise hängt von der verwendeten datenbank bzw. auch von der verwendeten datenbankengine ab. angenommen du verwendest mysql, was ich auf grund deines beispielcodes annehme, dann stehst du zB. vor der wahl des tabellentreibers.

benutzt du MyISAM, so ist jedes mal ein COUNT(*) … WHERE userid = 1; am besten beraten, bei InnoDB ist dies etwas anders; da wäre eventuell ein eigener counter sinnvoller - das jedoch erst bei 100 000 und mehr posts.

ciao

hallo nochmal,

@ chrisb: Ja ich habe 3 tabellen: users, threads und posts

in der posts tabelle habe ich ein feld für den user, aber das ist eine zahl, die user id, die es in der user tabelle auch gibt.

@ miro: ja ich habe myisam.