Themen aus der mysql zählen...

JayPa
Ich habe angefange mir ein kleines Forum zu bauen für eine kleine Seite!
In dem Forum sind aber leider noch keine Kategorien, also es gibt nur eine Kategorie wo man posten kann!
Sie hier:
[IMG]http://jaypa.de/ef2.jpg[/IMG]

Nun möchte ich gerne mehrere Kategorien haben, in dem ich eine neue Datei erstelle, wo ich eine Tabelle mit den verschiedenen Kategrorien verlinke!
Bloß ich wollte jetzt das so haben, wie das halt bei jedem forum so ist, das man hinter der verlinkten Kategorie die Anzahl der Themen steht!
Wie rufe ich aus der MySQL die Anzahl der Themen aus der neuen Tabelle ab???
Man müsste ja eigentlich die Anzahl der ID zählen, aber wie machen ich das?

Hier mal ein Bild von phpmyadmin und darunter ist der mysql code:
[IMG]http://jaypa.de/ef1.jpg[/IMG]


Die MySQL
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
-- 
-- Tabellenstruktur für Tabelle `eforum`
-- 

DROP TABLE IF EXISTS `eforum`;
CREATE TABLE IF NOT EXISTS `eforum` (
  `Status` int(1) NOT NULL default '0',
  `Topic` varchar(50) NOT NULL default '',
  `Autor` varchar(30) NOT NULL default '',
  `AutorID` int(2) NOT NULL default '0',
  `AutorMail` varchar(50) NOT NULL default '',
  `TimeStamp` int(4) NOT NULL default '0',
  `LastChange` int(4) NOT NULL default '0',
  `Text` text NOT NULL,
  `ID` int(4) NOT NULL auto_increment,
  `PID` int(4) NOT NULL default '0',
  `Smileys` int(1) NOT NULL default '1',
  PRIMARY KEY  (`ID`)
) TYPE=MyISAM AUTO_INCREMENT=3 AUTO_INCREMENT=3 ;

-- 
-- Daten für Tabelle `eforum`
-- 

INSERT INTO `eforum` (`Status`, `Topic`, `Autor`, `AutorID`, `AutorMail`, `TimeStamp`, `LastChange`, `Text`, `ID`, `PID`, `Smileys`) VALUES (0, 'test', 'depedia', 1, '', 1157791128, 0, 'test', 1, 0, 0),
(0, 'testtesttest', 'depedia', 1, '', 1158526550, 0, 'testtest', 2, 0, 0);



Würde mich super freuen, wenn mir jemand helfen würde!

Gruß
BreiteSeite
code:
1:
SELECT COUNT(*) FROM `eforum`;


Das?
W00tkaeppi
@JayPa:

Da ich gerade selbst an der Programmierung eines eigenen Forensystems sitze werde ich Dir helfen fröhlich

Übertrage in ein weiteres Feld - bspw. eforum.bid - die Foren-ID wo sich die Themen befinden, dann kannst Du einen Num_Row durchführen. Du musst dazu nicht die Anzahl der ID zählen, sondern die Anzahl der Datensätze in einer Tabelle. Du kannst erst dann Themen zusammenzählen lassen, wenn Du ihnen einen Interpreter zuweist. Bspw.:

php:
1:
mysql_num_rows(mysql_query("SELECT * FROM themen WHERE bid='".$forenidworausdieanzahlgezähltwerdensoll."'"));


Ein anderer Weg wäre, auch aus Performancegründen nicht außer Acht zu lassen, bei den Foren ein weiteres Feld anzulegen, welches mit jeder Erstellung und/oder Löschung eines Thema aktualisiert wird. Bsp. Für ein neues Thema:

php:
1:
mysql_query("UPDATE forentabelle SET threadcount=threadcount+1 WHERE id='".forumidwoneuesthemaerstelltwurde."'"));


Und das Beispiel für eine Themenlöschung:

php:
1:
mysql_query("UPDATE forentabelle SET threadcount=threadcount-1 WHERE id='".forumidwoneuesthemaerstelltwurde."'"));


Dann kannst Du den Wert der Forentabelle ganz einfach fetchen und anzeigen lassen.

€dit: Ich rate Dir außerdem dazu Deine Datenbankstruktur zu überdenken, sofern Du vorhast Dein Forum stark zu erweitern, bzw. auf ein Mindestmaß an Funktionen zu bringen.
JayPa
Danke für eure Antworten! smile Blume

@W00tkaeppi:
Also alle drei Sachen soll ich ändern, mehr gesagt neu einfügen?

Stark erweitern wollte ich es eigentlich nicht so, vielleicht noch smilies einbringen, aber sonst wars das eigentlich schon!

Gruß
W00tkaeppi
So wie es auf dem Screenshot zu erkennen ist, hast Du lediglich einen Bereich worin Themen erstellt und gelesen werden können. Du willst ja jetzt nun die Möglichkeit haben, mehrere Bereiche zur Verfügung stellen zu können (Foren), worin weitere Themen erstellt werden können. Dazu möchtest Du dann natürlich in der Übersicht anzeigen lassen, wie viele Themen sich in einem Bereich (Forum) befinden.

Zunächst erstellt Du eine neue Tabelle namens foren bspw. Mit ein paar wichtigen Feldern. Zum Beispiel ID(auto_increement,pri.key), titel(varchar(60)), subtitel(text), postcount(tinyint (11)) und threadcount(tinyint(11)). In der Tabelle der Themen fügst Du ein weiteres Feld ein namens bspw. Forum(tinyint(11)) und liest die Themen für dieses Forum folgendermaßen aus:

php:
1:
mysql_query("SELECT * FROM themen WHERE forum='".$vari_ueber_die_die_forenid_gesetzt_wird."'");


Der Rest ergibt sich mit meiner Erklärung im vorherigen Post ^^