PHP Forum

cd_brenner

Aktives Mitglied
Hi Leute, ich will mich gerade ran machen ein kleines Forum zu programmieren. Jetzt wollte ich wissen ob es möglich ist, alle Posts im ganzen Forum in einer Tabelle zu speichern. Wenn aus der Übersicht eine Frage ausgewählt wird, sollen automtisch aus der Datenbank alle Antworten dieser Frage ausgelesen und agezeigt werden.

Könnt ihr mit helfen??
 
Du musst einfach die Posts zuordnen. Jeder neue DS erhhällt ja seine ID. Schreibe in die Spalte VK bei neuen Themen den Wert 0, so kannst in einer Liste alle 1.Beiträge Listen. Bei Antworten muss in VK die ID des DS auf den geantwortet wird. Eine weitere Spalte brauchst Du für diverse Kategorien. Jede Kategorie eine Nummer. Das sollte eigentlich das wesentliche sein. Empfehlenswert, zu jedem Beitrag User, Datum, Uhrzeit, IP...

Gruss René
 
QUOTE (cd_brenner @ Do 25.8.2005, 11:14) Hi Leute, ich will mich gerade ran machen ein kleines Forum zu programmieren.

Hi

Ich bin mir sicher, Du hast dir das gut überlegt. Darf ich dich dennoch fragen, was genau der Grund für dich ist, dies selber zu erledigen?

Es gibt kleine, grosse, umfangreiche und minimale Bullentin Boards (Foren), welche durch jahrelanges Testing und tausende von Benutzern gewachsen und den Bedürfnissen angepasst wurden. Es wurden unzählige Mannjahre Programmieraufwand investiert, fast jedes nur erdenkliche Feature in ein Forum zu implementieren, sowie die Sicherheit für Benutzer und Webserver zu gewährleisten. Von diesem Aufwand kannst Du kostenlos profitieren, indem du die Software herunterlädtst und auf deinen Server installieren.

Was gibt es heute noch für einen Grund, ein Forum selber zu programmieren?

Gruss Sandro

 
Hi Sandro,

Ich weiß, dass ich mit meinen Programmierkenntnissen niemals eine Chance im Internetbiz hätte. Ich möchte dieses Forum aber trotzdem nur zu Übungszwecken programmieren. Einfach als gute Übung in PHP und MySQL. Wer weiß, vielleicht wirds ja noch was, vielleicht gehe ich damit noch online.

Lg markus
 
Ok, das ist was anderes.

Bedenke, dass vor allem Securitytechnisch enorm viel gefordert ist, damit es nicht zu unangenehmen Hacker-Aktionen kommt. Stichwort SQL Injection.

Gruss Sandro
 
'vk' ist der Name der Spalte in der Tabelle, den kannst Du natürlich frei wählen, die kann auch anders heissen. Ich habs von 'Verknüpfung' abgeleitet.

Gehen wir davon aus Du hast mehrere Kategorien, dann rufst Du die Beitragsliste auf in dem Du angibst, alle DS der Kat. 1 mit Inhalt 0 in Spalte 'vk'. So bekommst Du alle Eröffnungseinträge der Kategorie. Klickst Du auf einen der Einträge, so zeigst den Eintrag mit Inhalt an und Listest danach alle DS mit dem Inhalt in 'vk' die dem Wert der DS-Id der ersten Beitrags entspricht.

Beim Hinzufügen eines ersten Eintrages machst beim INSERT den Wert Null in 'vk'. Bei Antworten auf den Beitrag machst beim INSERT in 'vk' den Wert der DS-Id erster Beitrag.

Und in jedem Datensatz den Timestamp bei der Erstellung oder der Aktualisierung speichern, so kannst dann die Sortierung steuern. Fügst Du einem Thema eine Antwort hinzu, muss auch im ersten DS der Timestamt aktualisiert werden. So ist in der Beitragslistze der Kategorie immer das Thema zu oberst die zuletzt was geschrieben wurde. Den kompletten Beitrag kannst dann sortieren in chronologischer Reihenfolte, oder neuster Beitrag zuerst.

Wie Du siehst da kommen allerhand überlegungen dazu. Also viel Erfolg.

Mit PHP habe ich auch schon einen sehr rudimentären Chat realisert. http://www.pferde.ch/index.php?page=chat
Ist auch etwas zum üben. Wenn Du willst kann ich Dir den Code mal senden...
 
Danke für die tolle Antwort.

Mein Problem ist jetzt noch:
Alle Daten sind in einer Datenbank gespeichert.
Jeder Post hat die Spalten board und betreff.
Mit Board kann ich die Posts einer Besimmten kat. zuordnen.
Alle Nachrichten eines einer Frage haben den selben betreff.
Ich frage jetzt einfach alle Datensätze mit bestimmten Betreff ab.
Das Problem dabei ist nur, was ist wenn jemand zufällig den gleichen Betreff wählt.

http://xrayserver.xr.funpic.de/php/ausgabe.php?postid=
Für postid könnt ihr derzeit entweder Erster Eintrag oder Frage wählen.
 
QUOTE Alle Nachrichten eines einer Frage haben den selben betreff.
Ich frage jetzt einfach alle Datensätze mit bestimmten Betreff ab.
Das Problem dabei ist nur, was ist wenn jemand zufällig den gleichen Betreff wählt.

Das ist ein Problem. Ich empfehle Dir, die Posts zu einem Thema nicht über den Betreff, sondern über eine Id zu verknüpfen. Das hat den Vorteil der Performanz und der Eindeutigkeit (siehe auto increment id)

Im Falle dieses Forums ist es so, dass es eine Tabelle für Themen und eine für Beiträge gibt. Dann wählst Du alle Beiträge eines Themas z.B. wie folgt aus:

SQL select * from Beiträge where id=themen_id order by zeit
 
Das ist mir klar.
Ich habe jetzt alle posts in der Datenbank gespeichert.
Ich müsste mir jetzt alle Posts eines Themas kennzeichnen, damit ich sie dann im richtigen Thema anzeigen kann.
Ein Bespiel:

Frage1
Antwort1
Antwort1
Antwort1
...

Frage2
Antwort2
Antwort2
Antwort2
...

Jede Frage und jede Antwort müssen gekenntzeichnet werden:

Frage1 (mit PostID: 1)
Antwort1 (mit PostID: 1)
Antwort1 (mit PostID: 1)
Antwort1 (mit PostID: 1)
...

Frage2 (mit PostID: 2)
Antwort2 (mit PostID: 2)
Antwort2 (mit PostID: 2)
Antwort2 (mit PostID: 2)
...

Will jemand in die Frage 2 einsteigen, rufe ich alle Datensätze mit der PostID 2 ab.

Meine Frage: Wie kann ich diese PostID vergeben?? Oder gibt es andere möglichkeiten.






 
Hab ich's Dir zu kompliziert Beschrieben? Was Dir noch nicht richtig klar ist habe ich doch schon erklärt. Deshalb die Spalte 'vk' die die Datensatz ID des ersten DS in den Folgebeiträgen enthällt. Danach kannst suchen, das ist eindeutig und stellt Dich nicht vor das Problem mit gleichem Betreff.
Wenn Du im ersten DS im 'vk' statt null die DS ID drinn haben möchtest, so machst du unmittelbar nach dem INSERT ein UPDATE und schreibst in 'vk' das hier rein:

mysql_insert_id();

Darin speichert PHP die ID die ja autom. vergeben wurde. So kannst die ermitteln und speichern.

Und wenn immer noch Fragen sind, weiterfragen... ;-)
 
Ok, lass mich bitte zusammenfassen:

Äm, jede Frage bekommt den wert NULL in die Spalte VK geschrieben.
Was würde dann in den Folgebeiträgen stehen, auch NULL oder??

Ich check des irgendwie ned, oder ich steh dick auf der Leitung
sad.gif
sad.gif
sad.gif


Phu, wenns dir nix ausmacht, könntest es nochmal erklären, a bissl anders.
Ich weis, dass ich nervig bin.

Lg Markus, und Danke!!
 
Stopp ich habs!

Hör zu:

Folgendes Beispeil:

Frage zum Wasser PostID=0 ID=3
Antwort zum Wasser PostID=3
Antwort zum Wasser PostID=3
Antwort zum Wasser PostID=3
Antwort zum Wasser PostID=3

Alle Antworten bekommen als PostID (vk) die normale DS ID vom Starteintrag.
Stimmt das soweit??

Lg Markus
 
Genau so. Und nur bei der Frage brauchst du auch die Kategorie drinn. So kannst alle Fragen zur Kategori listen, wird eine Frage geklickt rufst Du alle Einträge auf die in ID oder VK den ID Wert der Frage haben...
 
Zurück
Oben