PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   Beiträge eines Forums zählen? (http://www.selfphp.de/forum/showthread.php?t=6109)

c4 15.11.2003 17:01:00

Beiträge eines Forums zählen?
 
Moin,

bin mal wieder am Basteln eines kleinen Forums. Auf der Startseite soll die Zahl der Beiträge in jedem Forum angezeigt werden sollen.
Erstmal die Tabelle:
Code:

CREATE TABLE IF NOT EXISTS forum (
id          INT AUTO_INCREMENT PRIMARY KEY,
pid        INT NOT NULL,
hits        INT NOT NULL,
subject    VARCHAR(200) DEFAULT '',
content    TEXT NOT NULL DEFAULT '',
user        VARCHAR(50) DEFAULT '',
email      VARCHAR(100) DEFAULT '',
timestamp  INT DEFAULT '0',
ip          VARCHAR(15) DEFAULT '',
showemail  CHAR(1) DEFAULT '1',
sendemail  CHAR(1) DEFAULT '0'
);

Was bei SelfPHP z.B. 'Grundlagen' oder 'Off-Topic' ist, das hat bei mir die pid (parent id) 0. Alle neuen Beiträge werden dann mit dieser pid zugeordnet.

Gibt es eine ordentliche Methode, um die Zahl der Beiträge jedes Forums (alle Einträge, die sich auf einen Eintrag mit pid==0 beziehen) zu ermitteln? Schleifen & Co. entfallen, denn das würde zu langsam werden.
Das selbe Problem besteht auch bei den Hits: Wie zeige ich auf der Startseite an, wie oft in jedem Forum rumgeklickt wurde?


Besten Dank,
Carsten

Gweilo 15.11.2003 18:05:39

Hi C4,

Die hits kannst du mit mySQL zusammenzählen:
SELECT SUM( hits )
FROM forum
WHERE pid=30

Die anzahl Posts pro Unterforum kannst du so etwa zählen:
SELECT COUNT(*)
FROM forum
WHERE pid=30

Das war doch, wonach du gesucht hast, oder hab ich Dich da misverstanden?

Gweilo

c4 15.11.2003 19:13:50

Jap, leider falsch 'verstanden'.

Der Inhalt sieht ungefähr so aus:
Code:

ID  PID    hits    bla
33  0      14      lalalala
34  33      7      lalalala
35  34      0      lalalala
36  34      0      lalalala
37  33      9      lalalala
38  37      0      lalalala
39  37      0      lalalala

- ID 33 ist ein Hauptforum (wie in dem Board MySQL oder Off-Topic)
- ID 34 ist ein Thread in dem Unterforum 33
- 35 und 36 sind Beiträge im Thread 34 (darum auch 0 Hits)

Nun würde ich gerne wissen, wie viele Hits in Forum 33 getätigt wurden und wie viele Beiträge sich darin insgesamt befinden.

overclocker 15.11.2003 19:59:35

mal schauen ob ich's 'verstanden' hab ;)

SELECT SUM(hits) AS hitz, COUNT(id) AS posts FROM forum WHERE pid=33

c4 15.11.2003 20:10:08

Naja, da fehlt aber noch was, Übertakter.

Wenn ich das in der obersten Ebene (praktisch ID==0) mache, dann stimmt die Anzahl doch nicht. Dann fehlen Beitrag 38 und 39, da diese sich auf 37 beziehen und anscheinend nichts mit 33 zu tun haben.
Das war es, was ich am Anfang meinte, dass man das in einer Schleife abfragen könnte, was ich aber nicht will.

Gweilo 15.11.2003 20:43:42

Ahso, jetz hab ich's verstanden (glaube ich zumindest)

Ist's möglich innerhalb eines Querys ein zweites Query zu starten? Ansonsten sähe ich da keine andere möglichkeit als durchzuschleifen.

Wie unterscheidest du eigentlich zwischen Forum und Thread? Bloss durch die 0 in PID? Ich weiss nicht. ich würde da ehrlich gesagt mehrere Tabellen machen, finde das nicht so toll, alles in einer Tabelle zu halten.

c4 15.11.2003 21:20:32

Zitat:

Ist's möglich innerhalb eines Querys ein zweites Query zu starten? Ansonsten sähe ich da keine andere möglichkeit als durchzuschleifen.
Doch, mySQL 4 kann das (angeblich). Schimpft sich SubSELECT. Jetzt wo Du es sagst (ich sollte ausschlafen): Ich hab mySQL 4 und mein Provider auch. Also steht dem nix im Weg, außer meiner Unlust.

Zitat:

ich würde da ehrlich gesagt mehrere Tabellen machen, finde das nicht so toll, alles in einer Tabelle zu halten.
Jau, gehört sich auch so. Ich hatte bloß keine Lust dazu. :)


Ich werde mich dann mal an SubSELECTs versuchen. Aber nicht mehr heute....

c4 27.11.2003 19:32:30

Des Lösungs Problem: Forum neu schreiben. :)
--> http://dbCF.de/t-forum/
Mehr Tabellen und mehr durchdacht.


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:55:04 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.