Konzept richtig?
Dave
- datenbank
Hi,
ich programmiere z.Zt. ein Forum selber, und bevor ich alles umsonst schreibe, wollte ich mal fragen, ob das konzept so passt bzw. ob ihr verbesserungsvorschlaege habt. Das Forum basiert auf PHP und MySQL.
Forum wird aufgerufen -> dabei wird eine Variable erzeugt, die angibt, dass noch kein Thread ausgewaehlt wurde.
Daraufhin werden aus einer Tabelle "Threads" _alle_ threads ausgegeben.
Jedes Threadthema erhaelt beim Eintragen eine Id und schreibt eine Tabelle mit dem Namen dieser Id.
Das Thema wird in einen Verweis geschrieben, der die Seite selbst aufruft, und die Variable threadid wird auf die Id des Threads gesetzt.
Nach der Funktion, die das Nichtvorhandensein der Variable threadid checkt und die Threads daraufhin ausgibt, steht als else-Anweisung eine Funktion, die stattdessen die Tabelle mit der Id des gewaehlten Threads ausgibt, sowie eine bestimmte Anzahl Antworten (wie ich das hinkriege, muss ich mir noch ueberlegen - das mit der bestimmten Anzahl meine ich).
Also, bevor ich mir jetzt gleich die Finger wundtippe: geht das auch besser - die verwendeten Sprachen moechte ich beibehalten.
Vielen Dank und schoene Gruesse,
Dave
Hallo Dave,
ich verstehe jetzt nicht ganz, worauf Du genau hinauswillst... http://aktuell.de.selfhtml.org/artikel/phpasp/php-forum/ dürfte Dir an sich weiterhelfen. Der Programmablauf selbst ist das geringste Problem bei den meisten Datenbankanwendungen. Das Hauptproblem ist die Modellierung der Datenbank.
(wie ich das hinkriege, muss ich mir noch ueberlegen - das mit der bestimmten Anzahl meine ich).
Wenn Du ein Board und kein Forum programmierst, dann kannst Du per Aggregatfunktionen das abfragen. Aber auch wenn Du ein Forum mit einem geschickten DB-Modell schreibst, dann kannst Du das ähnlich lösen.
Ich glaube, ich gehe jetzt an der Frage vorbei, aber vielleicht hilft Dir das trotzdem:
Datenmodell für ein Forum:
CREATE TALBE threads (
tid INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
[irgendwelche Daten zum Thread selbst]
primary_pid INT NOT NULL
);
CREATE TABLE postings (
pid INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
tid INT NOT NULL,
parent_pid INT NOT NULL,
[irgendwelche Daten zur Nachrichte selbst, z.B. Autor & co]
message_content TEXT
);
Dabei ist tid die Thread-ID und PID die Posting-ID. Bei jedem Thread gibt es eine "Primary Posting ID", die auf das Ausgangsposting zeigt. Bei jedem Posting gibt es noch eine tid, die wieder auf den ursprünglichen Thread zeigt und eine parent_pid, die auf das Posting zeigt, worauf dieses eine Antwort ist. Bei dem Ausgangsposting sollte diese -1 sein.
Du kannst dann die Anzahl der Antworten eines Threads per
SELECT COUNT(pid) as num_answeres FROM postings WHERE tid = <id des threads>;
abfragen.
Grüße,
Christian